Enhanced Metadata Handling for Documents and Data Readers

This Pull Request introduces extensible metadata handling for Document objects and updates the DataReader interface and its implementation (FileDataReader) to support metadata extraction and management. The changes improve interoperability with Retrieval-Augmented Generation (RAG) workflows and provide a modular approach to embedding metadata into documents.

Key Changes

Document Class Enhancements:

Added a metadata property to store key-value pairs of extensible metadata.
Introduced addMetadata and toArray methods to manage and serialize metadata.

DataReader Interface:

Added an extractMetadata method to standardize metadata extraction from document content.

FileDataReader:

Implemented the extractMetadata method to parse and populate metadata fields from the content.
Automatically populates metadata during the creation of Document objects.

DocumentUtils Enhancements:

Updated utility functions to support metadata when creating documents from arrays.
Ensured compatibility with new and existing functionality.

Tests:

Added tests to validate metadata extraction, assignment, and serialization.
Ensured all existing tests remain functional to maintain backward compatibility.

Benefits of This Contribution

Enhanced Metadata Support:

Metadata (e.g., titles, categories, tags) can now be embedded into Document objects, providing rich context for document retrieval and organization.

Improved RAG Workflows:

Metadata is critical for Retrieval-Augmented Generation (RAG) workflows, enabling:

Better search and filtering: Use metadata to refine searches in vector stores.
Increased accuracy: Improve relevance by aligning metadata with document embeddings.
Custom queries: Leverage metadata fields for fine-grained information retrieval.

Extensibility:

Developers can easily add new metadata fields without modifying the core library.
The extractMetadata method allows custom data readers to parse metadata from diverse file formats.

Backward Compatibility:

All existing functionality remains unchanged, ensuring no breaking changes for current users.

Ease of Integration:

Standardized metadata handling ensures smooth integration with vector stores, such as Qdrant or Pinecone.

How to Use the Enhanced Features
1. Add Metadata in a Custom Data Reader
Implement the extractMetadata method in a custom data reader to define how metadata is parsed:
use LLPhant\Embeddings\DataReader\DataReader;
use LLPhant\Embeddings\Document;

class MyCustomDataReader implements DataReader
{
    public function getDocuments(): array
    {
        $content = "Sample document content";
        $document = new Document();
        $document->content = $content;

        // Extract and add metadata
        $metadata = $this->extractMetadata($content);
        foreach ($metadata as $key => $value) {
            $document->addMetadata($key, $value);
        }

        return [$document];
    }

    public function extractMetadata(string $content): array
    {
        // Custom metadata extraction logic
        return [
            'title' => 'Extracted Title',
            'category' => 'Extracted Category',
            // Add more metadata fields as needed
        ];
    }
}

2. Retrieve Metadata in a RAG Workflow
Use the toArray method to serialize documents with metadata:
$documents = $dataReader->getDocuments();
foreach ($documents as $document) {
    $metadata = $document->metadata;
    print_r($metadata); // Outputs: ['title' => 'Extracted Title', 'category' => 'Extracted Category']
}

3. Store Metadata in Vector Stores
Combine content and metadata for embedding in vector stores:
foreach ($documents as $document) {
    $vectorStore->upsert([
        'id' => DocumentUtils::getUniqueId($document),
        'embedding' => $document->embedding,
        'metadata' => $document->metadata,
    ]);
}

Use Cases with RAG Workflows
1. Metadata-Driven Retrieval

Scenario: Search documents by category or tags before applying semantic search on embeddings.

Query Example:
{
  "filter": {
    "category": "User Guide"
  },
  "vector": [0.12, 0.34, 0.56],
  "top_k": 5
}

2. Context-Aware Augmented Responses

Scenario: Include metadata (e.g., sourceType, title) in AI responses to provide additional context.

Example:

"The information comes from the document titled 'User Guide for Product X'."

3. Chunk-Based Metadata

Scenario: Manage individual chunks of large documents using metadata.
Implementation:

Add a chunkNumber to metadata for better traceability and reconstruction.

Potential Enhancements

User-Defined Metadata Parsers:

Allow users to plug in custom metadata parsing logic for different file types.

Utility Methods for Metadata Queries:

Provide methods like findDocumentsByMetadata to simplify metadata-based retrieval.

Examples for Specific Vector Stores:

Add documentation or examples showing integration with vector stores like Qdrant and Pinecone.

Checklist

[x] Added metadata support to Document.
[x] Updated DataReader and FileDataReader for metadata handling.
[x] Enhanced DocumentUtils for metadata compatibility.
[x] Included comprehensive tests.
[x] Validated backward compatibility.

Let me know if you need any further adjustments or additional information! 🚀

Hey @raihan-js ,
Thanks a lot for that and sorry for the late reply.
This is really good. How can I help you finish it?

Hey @MaximeThoonsen, Thanks for getting back to me.
This is completed, but failing the tests here, if you look into it, maybe help me out passing the tests here? Or any suggestions?


Ability to download photos with feature layer service

It looks like the photos are stored server side in ESRI's cloud. How can I get access to these photos? If I share my app within my organization only, these photos are NOT publicly available right?
I would like to download these photos via export to shapefile from the feature layer used in geoform.

@geotrek I think using an open data portal with the service should allow that. It's probably not something we would do on the geoform itself.

Ok. So, I exported ESRI's feature service to GeoJSON and still the "Photo": null. The photos are null in geoforms view submission web map as well. Is this by design? The only place you can view the photos is on the web map you created in arcgis.com to build the geoform app. off of.

The photos are actually stored as attachments in the Feature Layer. So they aren't just a URL or a property in the attributes. I think I have an issue on here to allow viewing attachments of features on the GeoForm webmap, just haven't gotten to it yet.


Trigger Data Analysis Pipeline

Trigger the data analysis pipeline remotely from python script.

https://docs.databricks.com/api/workspace/jobs/runnow

https://anupamchand.medium.com/trigger-a-spark-job-on-databricks-using-rest-api-940227616768


[zlib] Could not find PKGCONFIG using the following names: pkg-config

Host Environment

OS: Azure DevOps Hosted Agent vs2017-win2016 / windows-2019

To Reproduce
Steps to reproduce the behavior:
vcpkg install glew:x86-windows sdl2:x86-windows sdl2-image[libjpeg-turbo]:x86-windows sqlite3:x86-windows zlib:x86-windows
Failure logs
Starting package 3/7: zlib:x86-windows
Building package zlib[core]:x86-windows...
Could not locate cached archive: C:\Users\VssAdministrator\AppData\Local\vcpkg\archives\e3\e389a2204830c36ab408512d61d8a03c8467fdf5.zip
-- Downloading http://www.zlib.net/zlib-1.2.11.tar.gz...
-- Extracting source C:/vcpkg/downloads/zlib1211.tar.gz
-- Applying patch cmake_dont_build_more_than_needed.patch
-- Using source at C:/vcpkg/buildtrees/zlib/src/1.2.11-deec42f53b.clean
-- Configuring x86-windows
-- Building x86-windows-dbg
-- Building x86-windows-rel
-- Fixing pkgconfig
CMake Error at scripts/cmake/vcpkg_fixup_pkgconfig.cmake:279 (find_program):
Could not find PKGCONFIG using the following names: pkg-config
Call Stack (most recent call first):
ports/zlib/portfile.cmake:46 (vcpkg_fixup_pkgconfig)
scripts/ports.cmake:79 (include)
Error: Building package zlib:x86-windows failed with: BUILD_FAILED
Please ensure you're using the latest portfiles with .\vcpkg update, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
Package: zlib:x86-windows
Vcpkg version: 2020.06.15-nohash

@MauriceHubain, this issue has been fixed now, could you get lastest source and try again?

Works fine again. Thanks!


New JdbcDatabaseContainer#withUrlParam(String, String) method

As discussed in #1764 it would be useful to have a new JdbcDatabaseContainer#withUrlParam(String, String) method, which would allow specifying arbitrary parameters to be included in the query part of the JDBC URL, whenever there is no dedicated Java method to control the corresponding query parameter.
For MySQL there are for instance many parameters (see https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-configuration-properties.html). One parameter I would like to be able to set for instance is allowMultiQueries.

AFAICT this issue can now be closed.

Closed by #1874.


Continue revisiting tokenization

Soon we'll need to think clearly about the different stages of a tokenization pipeline.  This PR begins to differentiate the stages that will be needed by

Renaming InputStream to CharIterator
Using "chars" in place of the more generic "stream", which will soon be too generic
Moving src/html5/input_stream.rs to src/bytes.rs, which will become its own module, since it's shared between HTML5 and CSS3 (and probably other formats)

While we're here, let's drop the unused TokenType enum.

@emwalker I assume it would be fairly trivial to add something like  io::stdin() into the charIterator?

@emwalker I assume it would be fairly trivial to add something like io::stdin() into the charIterator?

CharIterator is transitional.  I expect it to change (including the name) at some point.  But I'm assuming once things are in place, it will be straightforward to have io::stdin(), a socket, a file, etc., as the input to CharIterator.


Fix Unicode character issues in sample data

Replaced sample data and data loading mechanism.  Unicode characters are preserved.


Patches for decor updates

Fixed kelp and sea grass poking their nose out of the water. How rude.
Fixed stone columns poking out of the ground. They were a bit weird, tbh.
Added andesite walls to the ceiling of some caves. They are Keanu Reeves level cool.

How does that partOf work?

How does that partOf work?

@CocoTheOwner It basically sets how the decorator should place it. Sugarcane currently uses this with partOf: SHORE_LINE
The default is NONE which allows standard placement. SEA_FLOOR limits it to underwater and makes sure that stacks do not exceed the fluid height limit. SEA_SURFACE places on the water itself and CEILING places it on the ceiling of a cave biome. CEILING also flips the topPalette so that the top is on the bottom


AudioManager events support

You should add some events handling.
Firstly, it's support for handling media focus changes (AUDIOFOCUS_GAIN,AUDIOFOCUS_LOSS and others) and pause player automatically if focus changes, or give us an option to handle this as additional player property (this would be great!). E.g now if I start playing track, then go to Youtube app and try to watch video, the music will keep playing.
Seconly, ACTION_AUDIO_BECOMING_NOISY handling.
Though we can implement these ones manually, just write some native code, but it would be perfect to see these implementations in your library.

Fixed by #291


Change tileset color or translucency

It would be nice to adjust this similar to model.color. This might be a good beginner issue for someone working in the 3D Tiles codebase.

Requested on the forum: https://groups.google.com/forum/#!topic/cesium-dev/hXGPSdckquI

Closing in favor of doing this in the styling language, which isn't yet possible if a tileset doesn't have features, but will be soon.

Congratulations on closing the issue! I found these Cesium forum links in the comments above:
https://groups.google.com/forum/#!topic/cesium-dev/hXGPSdckquI
If this issue affects any of these threads, please post a comment like the following:

The issue at https://github.com/AnalyticalGraphicsInc/cesium/issues/5899 has just been closed and may resolve your issue. Look for the change in the next stable release of Cesium or get it now in the master branch on GitHub https://github.com/AnalyticalGraphicsInc/cesium.

I am a bot who helps you make Cesium awesome! Thanks again.


cant deploy

Describe the bug
Failed building the project. Make sure the build command is correct and try again.
Link to the Bolt URL that caused the error
https://bolt.new/~/sb1-houyzw
Steps to reproduce
deploy
Expected behavior
error
Screen Recording / Screenshot

Platform
Browser name = Chrome
Full version = <IP_ADDRESS>
Major version = 130
navigator.appName = Netscape
navigator.userAgent = Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36
performance.memory = {
  "totalJSHeapSize": 69529439,
  "usedJSHeapSize": 64233727,
  "jsHeapSizeLimit":<PHONE_NUMBER>
}
Username = blutrich
Chat ID = e4b2639f3a79

Additional context
can you refund me
i tried to fix this so many time
days from 20K to 12k tokens

Appreciate the feedback! We are aware of this issue and are tracking it here: #2019


"Name" is always null, "IsComplete" is always false.

I followed this tutorial step-by-step up the test of the "Create" method.  When post the described json from Postman to the Create method the "Name" property of the TodoItem is always null, and "IsComplete" is always false.  Obviously I'm doing something wrong.  The sole difference with my setup is that I'm using https.  Is another step needed to use https?  I did turn off  SSL Cert Verification as you instructed in the Tip.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 583ae3e7-5915-f22b-e54c-6c100cf2a7da
Version Independent ID: 95f2549e-29f9-e31a-b4d0-432b971643ff
Content: Create a Web API with ASP.NET Core and Visual Studio
Content Source: aspnetcore/tutorials/first-web-api.md
Product: aspnet-core
GitHub Login: @Rick-Anderson
Microsoft Alias: riande

I found if I prepend the [FromBody] attribute to the Create method argument it works:
public IActionResult Create([FromBody]ToDoItem item)
Why do I need to add the [FromBody] attribute?

@TRegan3 Are you targeting .NET Core 2.1? [FromBody] is implied when targeting 2.1, which is why it's not shown in the tutorial's code snippet. If you're targeting .NET Core 2.1, please set the 2.1 compatibility flag in Startup.ConfigureServices:
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

That's odd.  Yes, I'm targeting 2.1 and yes, I have that line in my Startup.ConfigureServices (I'm following the tutorial very strictly).  Yet and still I must use the [FromBody] Attribute for this to work.  Is there anything else I could be doing wrong?  I'm using Visual Studio 2017 version 15.8.7 and the latest version of Postman.  I'm running this on my local host, which launches a Chrome browser in IIS Express.

Sorry, I see now, I was missing the [ApiController] attribute on the Controller class.

Yes, and I should point out it was part of the tutorial that I copied and pasted, I must have inadvertently deleted that attribute when I was making changes.


Corrupted (but loadable) save game

Hi,
I just finished a fight against 7 trolls. I wanted to avoid the hydra-raise-and-whip-the-whole-party bug, so I decided to immediately save.

When loading the save game, the freeze continues.
I believe that something close to the hydra bug might be happening, as for over 10 seconds the trolls are thinking. The hydra bug didn't freeze the game though... :/
TemplePlus.log.Corruptedsave.txt
Github tells we can upload .zip, but it seems we can't ("Unfortunately, we don't support that file type, evne though I tried to .zip via 7z & winrar). GGWP github. ; http://www.filedropper.com/save7trollscorruptedbutloadablesave

Thanks, it looks like a bug with the initiative queue when a character is unconscious. It should be enough to fix the first bug / hydra bug :)


Global alignment works not really well

Not sure if it is a bug or a normal behavior, but when we dealing with time series (or signals) with different size, then applying global constraints (e.g 'sakoechiba) can't find any path (picture below)  with open_end(begin) == False.

Again, we can avoid (I wish) this behavior by setting aforementioned parameter to True. But at the same time we can just set 'sakoechiba' constraint using diagonal of path matrix
Thanks for any comments
ps : imho this python implementation of DTW is the most succesfull and documented the moment, thank you for your job

dtwalign  contains some of normalizable asymmetric step patterns such as asymmetricP05.
For detail of each step pattern, refer <IP_ADDRESS>Step patterns chapter of this paper which is also doc for DTWpy package that is another dtw python package.
Or you can create your own step pattern using dtwalign (whether custom step pattern is normalizable or unnormalizable is beyond the scope of my knowledge, sorry).


SAMA5D27: implement system reset to make nsh reboot command work

Summary

implement system reset on SAMA5D27 to make nsh reboot command work
adds board Kconfig setting for system reset

Impact

none for non-SAMA5D2 architectures
For SAMA5D27

If you enable system reset in the SAMA5D2-XULT board menuconfig, the nsh reboot command will be enabled and work.
Other SAMA5D2 boards should also work, but will need to provide their own sam_reset.c file.

Testing

Manual on a SAMA5D2-XULT board

Looks like the nxstyle checks failed due to issues  with header files comments and includes that are hard to fix.
The macOS sim build didn't run, I don't know how to restart that build.

@Ouss4 Thank you!


Bulk Capture Python Helper Methods

Added a BulkCapture class for asynchronous capture of data. Also added a step response helper function that does a bulk capture, gives a step position command, and plots the results.
Changed default liveplotter data_rate back to 100.

Thanks for all your comments. This is great feedback. I've implemented the changes and will request re-review. I also added a title to the plot based on the code used to create the bulk capture.


i18n(fr): update integrations-guide/netlify.mdx

Description (required)

Fix an import statement (see #9162)
Remove a heading (removed in an old PR, see #7375)

Related issues & labels (optional)

Suggested label: i18n

Lunaria Status Overview
🌕 This pull request will trigger status changes.

Learn more
By default, every PR changing files present in the Lunaria configuration's files property will be considered and trigger status changes accordingly.
You can change this by adding one of the keywords present in the ignoreKeywords property in your Lunaria configuration file in the PR's title (ignoring all files) or by including a tracker directive in the merged commit's description.

Tracked Files

Locale
File
Note

fr
guides/integrations-guide/netlify.mdx
Localization changed, will be marked as complete.

Warnings reference

Icon
Description

🔄
The source for this localization has been updated since the creation of this pull request, make sure all changes in the source have been applied.


Broken Links

On this page:  https://docs.openziti.io/docs/learn/core-concepts/security/authentication/totp/#enforcement
the Authentication Policies and Posture Checks  are broken links.

Also broken here: https://docs.openziti.io/docs/learn/core-concepts/security/authorization/posture-checks/ under the heading MFA

i wonder why our broken link checker isn't finding those... thanks for reporting. will be fixed with https://github.com/openziti/ziti-doc/pull/394

Thanks. should be fixed/published in a minute or two

Analysis: the issue is reproducible in Chrome incognito, but very puzzling indeed. YouTube video summarizing the my finding.
Vercel preview from before you fixed busted links:
https://ziti-law4nk1eh-openziti.vercel.app/docs/learn/core-concepts/security/authentication/totp/
The Markdown link Goosleggs encountered on page /docs/learn/core-concepts/security/authentication/totp/ was ./authentication-policies which resolved to /docs/learn/core-concepts/security/authentication/totp/authentication-policies, which you corrected to /docs/learn/core-concepts/security/authentication/authentication-policies by qualifying the relative link with the source filename.
The old, broken reference was actually creating a valid HTML rendering at build time, which is why Docusaurus build succeeded and all user agents (Chrome, Muffet, HTTPie, and cURL) get HTTP OK when they request the correct link directly which is the link that appears in the HTML rendered by Docusaurus.
However, for some reason, Chrome sees the correct URL in the HTML rendering at first, and then replaces that with the incorrect URL when it's clicked in the browser:
https://ziti-law4nk1eh-openziti.vercel.app/docs/learn/core-concepts/security/authentication/totp/authentication-policies
If I use Chrome's back button to return to /docs/learn/core-concepts/security/authentication/totp/ now the HTML source in Chrome is updated with the incorrect link. A refresh of the page restores the correct URL in the HTML, and the error is repeatable: clicking the link somehow gets the incorrect URL and it's temporarily updated in the page's HTML.


Issue#84: Wrong indentation for block comments

The following simple patch seems to work well for me.
You are calling 'self.trim_output' in 'self.append_newline' anyway. With an additional call to it in line 1034 you're undoing the effect of 'append_newline'.

Thank you, this seems to work!
https://github.com/einars/js-beautify/commit/00b1ee


update setState def. to support func.

Small update to the TypeScript definitions for setState() to support for function signature.

Coverage remained the same at 97.707% when pulling e45f8c3b6637b8c5cb0935b75f0f6ca5f999d394 on vutran:allow-for-setState-fn into adf91c6305f9da9cfa5e052d87566bbcb996f55b on developit:master.

Good call! Thanks @vutran

Coverage remained the same at 97.707% when pulling f60bf6a23d05e08af52c8974e344289b4ce7680a on vutran:allow-for-setState-fn into adf91c6305f9da9cfa5e052d87566bbcb996f55b on developit:master.

Coverage remained the same at 97.707% when pulling 3e15e8033aacfe68049b1306d66db52abd84d1d2 on vutran:allow-for-setState-fn into bdcd1e9ad6aca409ca5aea233ded971908cff948 on developit:master.


Fix tanks being empty on round start

About the PR
Fixes error with tanks being empty on roundstart.
The fix essentially separates field MaxVolume into two InitalMaxVolume which is serialized and MaxVolume which isn't serialized. That way we can bypass any issues that may appear during serialization.
Closes #4673
Changelog
:cl:

fix: Tanks are now full on roundstart

Tests failing.
https://github.com/space-wizards/space-station-14/runs/3710345331#step:10:1194

Tests failing.
https://github.com/space-wizards/space-station-14/runs/3710345331#step:10:1194

Solved via puddle refactor

Solved via puddle refactor

Puddle refactor is a big PR, you should make it so tests pass on this one so we don't need to depend on the other.


Add OAuth2 and RPC support

[x] OAuth2
[ ] RPC

I'll look into adding OAuth, as I may find it useful for a iOS app I'm working on

@nullpixel1 I plan to work on OAuth implementation this week. I'll let you know when I have something ready for release.

RPC could be something we look into the future, but as for now that API is private.


Celluloid convertion attempt number 3

Opening the PR, just in case the works out of the box.
The Celluloid conversion commit has gotten much smaller than before, because the various supporting changes have already been made. The tests all pass locally, but I expect there to be failures on TravisCI.

(And I may still split out the Initializer.foreground= and Notiffany commits into a separate PR, just to get them commit. For tonight I just want to see what TravisCI does with this code.)

This is great thanks! Any chance you can help get Travis passing again? :(

Hmm, I am pretty sure everything works, but it still seems to have a problem with the edit scenario. Although there was at least 1 green ruby version, which makes me suspect a timing issue. I will play with this some more and see if I can get it passing consistently.


Display total payments on homepage

The current implementation is complete, but slow.
Also makes the following improvements:

Use a definition list for the homepage statistics
Add a simple component to display the result of a request as plain text

Closes #60

Looks good to me, but iirc we had some product level questions on this story.
Did we resolve those questions? If not, is there a place I can find them so we can talk about them in IPM tomorrow :)?

We did not resolve those questions. I got no response on Slack, and proposed that any follow-up tasks be specified as separate issues.


Ultrasound Augmentation - #84

https://github.com/biosensics/medical-imaging-pipeline/issues/84

Next goal is to be able to control the FLAGS parameters directly from medical-imaging-pipeline.
In addition to the parameters that are already given in train.py, I have added two more hyperparameters (that do not change the Yolo architecture and training), which improved generalization performance for ultrasound:

In yolov3_tf2/models.py: Control the hard-coded l2 regularization parameter on line 49 via FLAGS (say FLAGS.l2_reg)

In train.py: Add a small Gaussian noise on the inputs for better generalization. This can be implemented as a layer as below and be controlled via a boolean (say FLAGS.add_training_noise)
 - If FLAGS.add_training_noise, apply the following on x in line 132
 - augmentation = tf.keras.Sequential([tf.keras.layers.GaussianNoise(0.2)])
 - augmentation(x, training=True)


performance

facetracker app open with some delay. can you please reduce the time delay?

There is a delay the first time that any app uses the library, in order to download the library dependencies.  This is unavoidable, and the amount of time will vary based on the user's connection quality.  But this only happens the first time.

thanks @pm0733464


Fix so PS bootstrapper MD5 check works on PS V2

This PR addresses issue #1078 by replacing the missing cmdlet with corresponding .Net classes.
Tested with PowerShell -version 2.0 -NoProfile .\build.ps1 -Verbose which failed previous this fix and now works.

LGTM! :+1:


Fatal error: URI malformed

I'm getting an error from CSS Nano on this line of CSS:
    background: url("data:image/svg+xml;charset=utf-8,%3C?xml version='1.0' encoding='utf-8'?%3E%3Csvg id='Layer_1' xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='-59 61 80 80' enable-background='new -59 61 80 80'%3E%3Cstyle%3E.st0{fill:none;stroke:%230cbfff;stroke-width:4}.st1{fill:%230cbfff}%3C/style%3E%3Cfilter id='dropshadow' height='130%'%3E%3CfeGaussianBlur in='SourceAlpha' stdDeviation='3'/%3E%3CfeOffset dx='-2' dy='2' result='offsetblur'/%3E%3CfeMerge%3E%3CfeMergeNode/%3E%3CfeMergeNode in='SourceGraphic'/%3E%3C/feMerge%3E%3C/filter%3E%3Ccircle class='st0' cx='-17' cy='100' r='32.8' filter='url(%23dropshadow)'/%3E%3Cpath class='st1' filter='url(%23dropshadow)' d='M-29.8 82L3.9 99.8l-33.7 17.4z'/%3E%3C/svg%3E") top center no-repeat;
As far as I can tell, the URL is valid, and in fact the image renders in Safari and Chrome.

Try disabling postcss-svgo as a temporary solution - via API;
{
  svgo: false
}

or CLI;
$ cssnano --no-svgo

/cc @TrySound

@plugin-kevin Seems like you use old version of postcss-svgo (part of cssnano). Try to reinstall your node_modules.

@TrySound npm update solved it. Thanks!

Also getting that error, but updating the modules didn't fix it for me.
Running:
gulp-cssnano 2.1.1
postcss-svgo 2.1.2


Contribute Chariott Service Discovery blueprint image workflow

This github workflow checks out the eclipse-chariott/chariott repository and builds an image with the configuration and settings needed to run in the integrated mode with the other workloads in the software-orchestration blueprint. It then pushes the resulting image to the blueprint GitHub container registry.

LGTM as well.


Update Kubernetes support matrix

Kubernetes follows an N-2 support policy (meaning that the 3 most recent minor versions receive security and bug fixes) along with a 15-week release cycle. At the end of the day, the most recent three minor Kubernetes releases are 1.32, 1.31, 1.30, which are officially supported by the Kubernetes community.
Looking at the Kubernetes test matrix, Kubernetes v1.29 and v1.30 are covered. We need to bump up 1.30 and 1.31 respectively.
In addition, the prerequisite of Ratify installation just mention Kubernetes v1.20 or higher on the website. This is not a strict prerequisite for users. I would suggest adding a supported Kubernetes matrix statement to the installation guide and included the recommended versions (tested by Ratify e2e) there.

cc @binbin-li


Fix/followers following tabs

Description
Fixes # (issue)
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Change Status

[ ] Complete, tested, ready to review and merge
[ ] Complete, but not tested (may need new tests)
[ ] Incomplete/work-in-progress, PR is for discussion/feedback

How Has This Been Tested?

[ ] Test A
[ ] Test B

Checklist

[ ] My code follows the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] My code has been reviewed by at least one peer
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] There are no merge conflicts

Fixes the following cards in Trello:
https://trello.com/c/YxPLGXsg
https://trello.com/c/M7iJopmC


Table of contents with TWIG?

Is it possible to hierarchically list h1's and h2's in posts with twig? Like the Table of Contents plugin in wordpress.

If you want to create a TOC automatically, you'll have to write a plugin to extend Parsedown (the Markdown parser Pico uses).
Besides that you can use the ### This is a headline {#this-is-a-headline} Markdown syntax in your content files to add anchors to headlines. You can then add a list of all anchors and their respective title to the YAML header of your content file and use this information to create a TOC using Twig. See "Table of contents" on http://picocms.org/cookbook/

If you want to create a TOC automatically, you'll have to write a plugin to extend Parsedown (the Markdown parser Pico uses).
Besides that you can use the ### This is a headline {#this-is-a-headline} Markdown syntax in your content files to add anchors to headlines. You can then add a list of all anchors and their respective title to the YAML header of your content file and use this information to create a TOC using Twig. See "Table of contents" on http://picocms.org/cookbook/

Ok, thanks!

Just for the record:
Table of Content in Pages
https://github.com/caseyamcl/toc
# GIS, Geolocation

[TOC]

Links to location related stuff.

## Linklist

- bla

## More

Plugin
<?php

class TableOfContent extends AbstractPicoPlugin
{
	const API_VERSION = 2;

	protected $enabled = true;

	public function onContentParsed(&$content)
	{

		$markupFixer  = new TOC\MarkupFixer();
		$tocGenerator = new TOC\TocGenerator();

		$content = $markupFixer->fix($content);
		$toc = '
' . $tocGenerator->getHtmlMenu($content, 1,2) . '
';

		if(strpos($content,'[TOC]') !== false)
		{
			$content = str_replace(['
[TOC]
','[TOC]'], $toc, $content);
		}
	}
}


Publish PIP package?

Hello,
I am looking at using your package in one of opensource automation software, do you have any plans to publish this as pip package/PyPi ?
Thanks

Yes sure. But I'm waiting till 1st November to release it.
Because then the Outlook Api version 1 is going to be deprecated.
You can check branch "v2" in this project to see the upcoming changes.
Till then you can use the "Clone or Download" option.

I'm back to you just to let you know I merged the v2 branch into master. So now the project is updated to the most up to date version. That means It no longer handles basic authentication. But comes with nre features such as drives managements etc.
Also, the library is published on pypi.org under the 'pyo365' name. Check the Readme for further notes.
See ya


Implemented Hover Effects on Menu, Services, Cart, and Contact Us Pages

Description
Added hover effects to buttons, menu cards, and social media links on the Menu, Services, Cart, and Contact Us pages. This update enhances user interaction and visual feedback across these pages, providing a more engaging user experience.
Related Issues
#225
Type of PR

[x] Feature enhancement

Checklist

[x] I have gone through the contributing guide
[x] I have updated my branch and synced it with project main branch before making this PR
[x] I have performed a self-review of my code
[x] I have tested the changes thoroughly before submitting this pull request.
[x] I have provided relevant issue numbers, screenshots, and videos after making the changes.
[x] I have commented my code, particularly in hard-to-understand areas.

solve conflicts.

Hii @sunny0625  Can you please put level label on this pr .


Google Map tiles are not rendering properly in the Editor's Scene View

Hello, I have a problem with the Unity Editor when it's rendering the Map tiles. In this coordinate(21.0675660418165,<PHONE_NUMBER>85616), the object is rendered as a flat canvas and doesn't have any detail. While in this coordinate(39.736401, -105.25737), the object is rendered perfectly. In the troubleshooting has this problem, it said about the shader but I check the package manager and it's already installed.

Google most likely doesn't have any 3D data in that location (other than a terrain surface). You can confirm this by checking in Google Maps or Google Earth.


[openstack-cloud-controller-manager] LoadBalancer creation fails with „Pools must be named when creating a fully populated loadbalancer“

Is this a BUG REPORT or FEATURE REQUEST?:
/kind bug
What happened:
A deployment with the currently tagged latest version (k8scloudprovider/openstack-cloud-controller-manager@sha256:b2282327cbfb24d5fc12e6fab0f0176f2a6f0a9876ab8499a8e71dad0e4878f9) can’t create octavia loadbalancers. as the validation fails.
Downgrading to v1.20.2 fixed the issue.
Warning  SyncLoadBalancerFailed  9m35s (x5 over 70m)   service-controller  Error syncing load balancer: failed to ensure load balancer: error creating loadbalancer kube_service_kubernetes_kube-system_ingress-ingress-nginx-controller: error creating loadbalancer [OMITTED VERBOSE DATA HERE]: Bad request with: [POST https://de-cgn.stage.openstack.get-cloud.io:9876/v2.0/lbaas/loadbalancers], error message: {"faultcode": "Client", "faultstring": "Validation failure: Pools must be named when creating a fully populated loadbalancer.", "debuginfo": null}

What you expected to happen:
Octavia Loadbalancer is created without any errors.
How to reproduce it:
Use the cloud-controller-manager with the image k8scloudprovider/openstack-cloud-controller-manager@sha256:b2282327cbfb24d5fc12e6fab0f0176f2a6f0a9876ab8499a8e71dad0e4878f9 with
[LoadBalancer]
use-octavia=true

in the /etc/config/cloud.conf with OpenStack ussuri.
Create a service of type LoadBalancer, then check the cloud-controller-manager logs.
Anything else we need to know?:
I think this is related to @notandy's change in #1365.
Environment:

openstack-cloud-controller-manager(or other related binary) version: Docker image, k8scloudprovider/openstack-cloud-controller-manager@sha256:b2282327cbfb24d5fc12e6fab0f0176f2a6f0a9876ab8499a8e71dad0e4878f9
OpenStack version: ussuri

The initial change included named pools, I had to remove it due to review. Will amend a fix shortly.

@notandy Thanks a lot! And please take your time, we can obviously stay on the released version for now :)

/assign

@lingxiankong just wanted to push a pr -_-

@lingxiankong just wanted to push a pr -_-

I didn't see you have assigned to yourself, thought you are not available for a fix.

@lingxiankong just wanted to push a pr -_-

I didn't see you have assigned to yourself, thought you are not available for a fix.

That's fine, I tested your quickfix, lgtm.

Can you please release a quickfix for this? This issue is a month old and the image with the "latest" tag hasn't been rebuild so far.

Can you please release a quickfix for this? This issue is a month old and the image with the "latest" tag hasn't been rebuild so far.

Should be fine now, please try again.

Thanks!


Hostname begins with digits is not accpted by the validator.

The regex of hostname is:
 	hostnameRegexString            = `^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$`

For hostname like 1.foo.com, it is rejected by the validator.
Accroding to RFC1123, valid DNS hostnames could be start with digits.

Thanks @dnartz I’ll take a look as soon as I can,
If you wanted to make a PR That’d be awesome too :)

Hey @dnartz I added a new validation in Release v9.10.0 for RFC 1123 hostname called hostname_rfc1123
I put a note in the release of how to continue to use the hostname tag with it.


Share link isnt working

I tried using the share link, it opened my browser and indicated the page could not be found.

Unfortunately the backend server is currently down and I won't be able to take care of it before September


Unexpected warping results

I've just created a module that allows me to generate a mapping function for ndarray-warp, to distort an image like imagemagick's shepard's distortion: https://github.com/ismay/generate-map
It allows you to specify a set of coordinates and their intended displacement, which results in images like these:

(warped with these parameters: [[210, 296, 100, 0], [101, 97, -30, -10], [77, 473, 50, -100]], see test here: https://github.com/ismay/generate-map/blob/master/lib/index.test.js)
Everything works as expected, but I encountered two things that I wasn't able to solve:

Output is rotated 90 degrees counterclockwise (also when just passing an image through ndarray-warp without doing anything). Seems like a bug? Or am I doing something wrong here?

Another thing that I noticed and could not figure out from this project's documentation is that the output is grayscale, even though the original image is in color. Is there anything I could do to output color images?

Thanks!

I moved the repo to https://github.com/ismay/ndarray-morph, and removed ndarray-warp, which fixed the problem (see this commit https://github.com/ismay/ndarray-morph/commit/9c7a39458ea765201fd554278caa3818e4060765). So for me the problem's fixed, but it might be good to address problem 2 for this lib.


Satellite API: Page Number button does not return page number

In the Satellite API the PAGENUM KEY-STATE does not return a text value. The page number value would be helpful here to understand which page was currently selected.
"KEY-STATE DEVICEID=10401 KEY=8 TYPE=PAGENUM  COLOR=#000000 TEXT= FONT_SIZE=undefined PRESSED=false"
Companion: 3.4.0, OS: Ubuntu: 22:04 server

Yes, it should give you the text of the page number button (either number or name).
As a workaround you can use a regular button instead and just type the page number on it.


"Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled." after SPI init

I'm trying to get a tracker to run with the board t-beam V1.2. Unfortunately so far without success.
I installed VSCode and Platformio on a fresh Win11 according to the instructions. Then imported the code according to the instructions, changed the call, selected the board "ttgo-t-beam-V1_2", let the build run and flashed the board.
Everything's nice up to here.
The board boots and shows the start screen with LoRa Freq [EU] and version 2024.04.18 on the OLED.
However, there is a bootloop.
Here is the log on the serial port
`
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13192
load:0x40080400,len:3028
entry 0x400805e4
E (752) SPIFFS: mount failed, -10025
[     8][E][SPIFFS.cpp:89]�egin(): Mounting SPIFFS failed! Error: -1
[INFO][AXP2101] init done!
[  1028][E][vfs_api.cpp:24] open(): File system is not mounted
[  1029][E][vfs_api.cpp:24] open(): File system is not mounted
[INFO][Main] RichonGuzman (CA2RXU) --> LoRa APRS Tracker/Station
[INFO][Main] Version: 2024.04.18
E (5054) SPIFFS: mount failed, -10025
[INFO][Main] Number of APRS Messages : 0
[INFO][Main] Number of Winlink Mails : 0
[INFO][LoRa] Set SPI pins!
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
Core  1 register dump:
PC      : 0x400dbff4  PS      : 0x00060a30  A0      : 0x800d278c  A1      : 0x3ffd0260
A2      : 0x3ffc4dec  A3      : 0x3ffc6450  A4      : 0x3ffc4b90  A5      : 0x3f4022b8
A6      : 0x3ffc6b8c  A7      : 0x00000000  A8      : 0x800dbfe9  A9      : 0x3ffd0240
A10     : 0x3ffd02ac  A11     : 0x3f4022b8  A12     : 0x00000017  A13     : 0x0000001a
A14     : 0x00000012  A15     : 0x0000e100  SAR     : 0x00000005  EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000  LBEG    : 0x4011563d  LEND    : 0x4011564c  LCOUNT  : 0x00000000
Backtrace: 0x400dbff1:0x3ffd0260 0x400d2789:0x3ffd02e0 0x40116506:0x3ffd03a0
#0  0x400dbff1:0x3ffd0260 in LoRa_Utils::setup() at src/lora_utils.cpp:129 (discriminator 4)
#1  0x400d2789:0x3ffd02e0 in setup() at src/LoRa_APRS_Tracker.cpp:180
#2  0x40116506:0x3ffd03a0 in loopTask(void*) at C:/Users/xxxxxx/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:42
ELF file SHA256: 00db70a7b17046f5
Rebooting...
ets Jul 29 2019 12:21:46
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13192
load:0x40080400,len:3028
entry 0x400805e4
[INFO][AXP2101] init done!
[INFO][Main] RichonGuzman (CA2RXU) --> LoRa APRS Tracker/Station
[INFO][Main] Version: 2024.04.18
[INFO][Main] Number of APRS Messages : 0
[INFO][Main] Number of Winlink Mails : 0
[INFO][LoRa] Set SPI pins!
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
Core  1 register dump:
PC      : 0x400dbff4  PS      : 0x00060a30  A0      : 0x800d278c  A1      : 0x3ffd1370
A2      : 0x3ffc4dec  A3      : 0x3ffc6450  A4      : 0x3ffc4b90  A5      : 0x3f4022b8
A6      : 0x3ffc6b8c  A7      : 0x00000000  A8      : 0x800dbfe9  A9      : 0x3ffd1350
A10     : 0x3ffd13bc  A11     : 0x3f4022b8  A12     : 0x00000017  A13     : 0x0000001a
A14     : 0x00000012  A15     : 0x0000e100  SAR     : 0x00000005  EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000  LBEG    : 0x4011563d  LEND    : 0x4011564c  LCOUNT  : 0x00000000
Backtrace: 0x400dbff1:0x3ffd1370 0x400d2789:0x3ffd13f0 0x40116506:0x3ffd14b0
#0  0x400dbff1:0x3ffd1370 in LoRa_Utils::setup() at src/lora_utils.cpp:129 (discriminator 4)
#1  0x400d2789:0x3ffd13f0 in setup() at src/LoRa_APRS_Tracker.cpp:180
#2  0x40116506:0x3ffd14b0 in loopTask(void*) at C:/Users/xxxxxx/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:42
ELF file SHA256: 00db70a7b17046f5
Rebooting...
`
What am I doing wrong?
I tried to find the location of the crash in the code.
This seems to be here:
"long freq = currentLoRaType->frequency;" in lora_utils.cpp
If I put debug output in front of this line I can see it.
If I set the debug output afterwards I no longer see it.
Unfortunately I don't know much about C++. My knowledge comes from Z80 Assembler and TurboPascal3 :)
What is noticeable is that SPIFFS cannot be mounted when it is started for the first time.
I suspect that the line in question is trying to read the frequency from the SPIFFS, which fails.
An attempt by me to set the frequency statically lacks my knowledge.
But I probably would have just come to the next post with a similar call.
Kind regards, Ron

Hi Ron, did you upload also the Filesystem in VSCODE??? usually this boot loop comes when its not uploaded and the board crashes as it has no info to start with

Plaese excuse my mistake.
I found the necessary description in another (old) ESP32-APRS project.
I didn't see the important step in your instructions.
Maybe it is possible to point out this step at startup if the file system is not available?
73 de Ron


Peer Sharing - Which peers do we ask to?

Which of the current established peers do we select to ask?
We don't see any need to ask cold peers as the valency of the established peers is sufficiently high (if, in future, we decide that we do need this we can make peers 'warm' anyway). This means Peer Sharing does not require any additional peer promotion mechanisms.
We are not relying on Peer Sharing to ensure eclipse avoidance.
We need to provide mechanism to disallow Peer Sharing:

for configured root peers
as part of the peer handshake (so a remote peer can suppress their inclusion)

inbound case
outbound case

Need to consider:

configuration (where, how global)
handshake
how quickly will a rich topology emerge from a 'cold' start (bounding worst case)
when (in a node's operational startup) should gossiping be enabled

how does this interact with the bootstrap peer set

what information should be maintained across a node restart? (how does this interact with bootstrap peers? how does this interact with topographical optimisation?) [maybe orthogonal to gossip - separate issue?]

For now Gossip is being idealized as a Request-Response type of protocol, that will happen asynchronously as a way for the node to obtain more known peers (cold in particular). As @njd42  said, only established peers should be picked to gossip to (i.e. start a request-response protocol). Being on the request-ing end of the protocol, one has to first decide a few things:

When to gossip?
A: Gossip should be managed by peer selection governor, i.e. gossip requests should be made to fulfill some target. This target does not need to be explicit and we can probably reuse the current legacy-gossip implementation logic. However, there are a couple of requirements regarding this:

We probably do not want to Gossip when in Bulk Sync mode; this might need a global runtime flag.
We do not want BPs participating in Gossip; this might need a global configuration flag
One might want to explicitly disable gossip with a given root peer; this might need a local/scoped configuration flag

Who to gossip with?
A: This is already decided: established peers. However, a possible source of established to-gossip peers are inbound connections, so we need a way to know if a given inbound connection is willing to participate in gossip (i.e. be gossiped with/about); this requires a change in the handshake.
We ought to make an effort to pick non-ledger peers
One also needs to discuss if/when should a peer gossip with the same peer twice.

How/how many to pick from the established peers to perform gossip with?
A: This might depend on what's expected from the response end of the protocol, but picking should be random.

So to summarize:
When the node is making an outbound connection to some peer it should be communicated in the handshake whether we want to be gossiped about/with.
If the Peer Selection Governor decides it is a good idea to perform gossip to fetch more peers to our Known Set, the node should first (not by this particular order):

Check the global configuration flag value;
Check if we are in Bulk-sync mode;

If these first checks go through, all it's left is to pick a random set of peers from the established to-gossip set according to some policy (e.g. 20% should be non-ledger peers).
If all requirements are met a Gossip request shall be initialized to all peers that were picked.

General comment after giving this some thought is that we might not need an extra mini-protocol and re-using a lot of the current legacy-gossip system might be sufficient.

from @njd42:

Let’s assume that, some how, every node is starting with an up-to-date set of ledger peers, root peers are only being used to connect block producing nodes to their relays (so are not creating connectivity outside that ‘strongly-connected-component’ [SCC - graph theory concept]).
Nodes start connecting - the bearer address of the sender (x), as seen at the receiving end (A) gets added to the A’s ‘gossip address pool’ (assuming for the moment that it verifies) - this is the base case mechanism by which a ‘gossip address’ becomes ‘known’.
Another node (either one that initiated a connection to this node ‘A’, or one the was connected to by the node ‘A’) requests ‘please send gossip peers’ - it gets […., x,….] (response containing ‘x’) which is added to its ‘gossip address pool’ (after verification). This address is now eligible for 1) being gossiped to other peers; 2) inclusion in the cold set for this peer.
This process now iterates: In this (contrived) scenario the first iteration (assuming it is not immediately requested after initial connection) might return a handful of peers but each iteration of this approach increases the ‘path length’ of the potential overall gossip set. Remember, our network has a path length of 3 to 10, this is ‘quick’ (in our timescale of interest).
So the topology gets ‘richer’ each iteration - small world graph theory suggests that we would ‘know’ >50% in 2 or 3 iterations, and > 95% in 5 or 6.
Imagine a node performs a gossip request every 600 to 1000 seconds (maybe frequency decreasing as node is operating) eg a sequence of [ 60s±10s, 120±20s, 240±40s, 500±50s, (repeat 1000±100)] the overall system would be ‘extremely well connected’ in around 1000s from this (worst case) scenario described above.

We have concluded that we only need to request from Established Peers reducing network traffic and transient load.


Print usage when the program runs without any command-line args

LGTM

Codecov Report

Merging #345 into master will increase coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #345      +/-   ##
==========================================
+ Coverage   42.55%   42.58%   +0.02%
==========================================
  Files          12       12
  Lines       10175    10175
==========================================
+ Hits         4330     4333       +3
- Misses       4684     4710      +26
+ Partials     1161     1132      -29

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d13ad53...125e67b. Read the comment docs.


Should we add authors to articles?

While its mostly us two writing, maybe isn't so relevant (but maybe it is?), but if we get external contributors authoring it might be nice to credit them clearly. Not sure what's the best way to do this if it is useful - name with link to website/preferred social media is maybe sufficient, or would we want full-on author bio pages?

Easiest option at the moment is name / link. If a sizeable number of contributors turn out to be not-us then we can make author pages later.


GlusterFS

Shared storage at bare-metal level

Had weird issues with UIDS via 3 nodes
chose a more practical approach with Docker Compose stacks on Portainer


View spreadsheet as HTML

My goal is for Chrome's translation feature to work.
Hopefully this will be better for mobile as well.
I believe that Google structures their sheet HTML downloads as "application/zip" because sheets can have multiple tabs. Displaying this will require a dependency to unzip files client side. It would be nice to only load such a dependency on demand or at least to load it with a delay because some users will never open up spreadsheets.
It's possible that displaying the HTML version will take longer for most users and we may want to use preview as the default view.
Below is a diff for how to ask for the HTML export. DocPage also needs to be changed to ask for application/zip or to fetch that version from the associated exportLinks.
diff --git a/packages/website/src/pages/ContentPage/index.tsx b/packages/website/src/pages/ContentPage/index.tsx
index 8fdbb3a..b78185b 100644
--- a/packages/website/src/pages/ContentPage/index.tsx
+++ b/packages/website/src/pages/ContentPage/index.tsx
@@ -64,6 +64,7 @@ function ContentPage({
   }

   switch (file?.mimeType ?? '') {
+    case MimeTypes.GoogleSpreadsheet:
     case MimeTypes.GoogleDocument:
       if (docMode !== 'view') {
         const edit = docMode === 'edit';
diff --git a/packages/website/src/utils/gapi.ts b/packages/website/src/utils/gapi.ts
index fee2e59..ad872fe 100644
--- a/packages/website/src/utils/gapi.ts
+++ b/packages/website/src/utils/gapi.ts
@@ -42,7 +42,6 @@ export const MimeTypes = {
 };

 export const PreviewableMimeTypes = [
-  MimeTypes.GoogleSpreadsheet,
   MimeTypes.GooglePresentation,
   MimeTypes.GoogleDrawing,
   MimeTypes.MSOpenWord,

fflate seems to be the smallest js lib. Otherwise could try zip.js

partially implemented in #121

TODO

vertical scrolling does not work
support multiple sheets
show comments


in db/dump/stories.json object's field featured_image_url changed to …

…featured_img_url
#27

Closes #27


Question about no credit

Hi,
I'm using amqp library in and the amqp10-link-cache and sometimes I receive follow error. How would I handle this cause of error?
amqp:link:transfer-limit-exceeded:There is no link credit to accept the delivery
Thx

@geoffreysamper I'm assuming this is for a receiver link? this looks like the credit function isn't being called. This could happen for a number of reasons:

there isn't a defined credit function (by default there is one provided)
messages are not being settled upon receipt (by default we auto settle)
?? something else

Could you give a little more detail about your particular setup? It would also be helpful to see a debug log (specify DEBUG=amqp* as an environment variable before running) to see if any other peculiar behavior is present.

So what you mean is that I'm using eventhub and there would be a problem. I will try to simulate it again but i can take a while

@geoffreysamper no.  We have integration tests that run against EventHub and ServiceBus with no issue, what I'm saying is that its possible that you have a configuration error that is preventing the client from "flowing", and thus refreshing its credits

Ok and the only thing you need is the the debug information

Yes that would be useful, but also if you could provide more information on whether you modifying the default policy, or if you've opted to not use auto-settle and therefore are not manually sending disposition information for received messages.

I copied the the content of event policy because of the pullrequest with the encoder
https://gist.github.com/geoffreysamper/ba994b545bd64ab48de39047b1791be8

Hi,
I found the issue with the reason was the the policy was not on setteld. Thanks for the response

@geoffreysamper cool, glad that wasn't too hard to figure out :)

I can you leave it open I still have the issue. But difficult to simulate I will try it in the next couple of days

Sorry about that, we'll leave it open until you close it

I can't simulate the bug for the moment. The next couple of weeks I will do more stress testing. May then i can resimulate it. So for now you can close the issue for me.
Thx

Hi,
I was able to resolve the situation on a production site. When I ran a stress test after a while I got follow error
 Error during sending to eventhub webview @error(29) [condition='amqp:link:transfer-limit-exceeded' description='There is no link credit to accept the delivery (id=16004).' info={}]

What I think is that my server gets to many requests and can't follow sending the messages to eventhub.  How could I resolve this kind of issue so that I don't loose any messages.

I called MS support and it would be that I send to many message so I have to increase my throughput units


Modifying hidden creative invenory

If player logs out in creative mode, someone can join with their name (without logging in), take an item from creative menu and put it in any slot. This will be added to the actual inventory, even overriding existing item.
Possible solutions:

auto clear un-logged-in inventories
force survival (or even spectator/adventure) while auth

I like the idea of spectator/adventure while in auth. But it can cause some problems if the plugin is uninstalled and players remain in this gamemode.
More likely. I need to update the packet interceptor to block creative item actions.


segmentation fault with v1.25.3+k3s1 on arm64 / PINE A64+

Environmental Info:
K3s Version:
% /usr/local/bin/k3s-v1.25.3 -v
k3s-v1.25.3 version v1.25.3+k3s1 (f2585c16)
go version go1.19.2

Node(s) CPU architecture, OS, and Version:
Hardware: PINE A64+ SBC running Arch Linux ARM
% uname -a
Linux pine64 5.19.8-1-aarch64-ARCH #1 SMP PREEMPT Thu Sep 8 18:20:33 MDT 2022 aarch64 GNU/Linux

Cluster Configuration:

1 server (pine64)
1 agent (rpi4)

Describe the bug:
Running v1.25.3+k3s1 causes a segmentation fault:
% /usr/local/bin/k3s-v1.25.3 kubectl version
[1]    110003 segmentation fault  /usr/local/bin/k3s-v1.25.3 kubectl version
% /usr/local/bin/k3s-v1.25.3 ctr
[1]    110086 segmentation fault  /usr/local/bin/k3s-v1.25.3 ctr

v1.25.2+k3s1 worked without issues.

Do you see the same crash on the Pi, or does this only affect the Pine64 board?
I suspect this is going to be a golang bug, as we have not changed anything about how we build k3s between the two releases.

v1.25.3+k3s1 runs fine on the Pi.

Can you get a core dump from the k3s process when it crashes?

It seems something got wrong when k3s unpacked its content to /var/lib/rancher/k3s/data/48f93e534af9689a3f627296d5e208546e2d71a04a34d713e2eb39ae05e6fd77. There where a couple (e.g. check-config) of data files in the bin directory. After removing the directory, v1.25.3+k3s1 runs without issues on the Pine64.


"LayerNormKernelImpl" not implemented for 'Half'

Can you please tell us the module versions you have used to make this app run?
Mine are
2023-01-25 19:12:05  (rev 2)
ca-certificates  {2022.10.11 (defaults/win-64) -> 2023.01.10 (defaults/win-64)}
certifi  {2022.9.24 (defaults/win-64) -> 2022.12.7 (defaults/win-64)}
+brotlipy-0.7.0 (defaults/win-64)
+cffi-1.15.1 (defaults/win-64)
+charset-normalizer-2.0.4 (defaults/noarch)
+colorama-0.4.6 (defaults/win-64)
+cryptography-38.0.4 (defaults/win-64)
+filelock-3.9.0 (defaults/win-64)
+flit-core-3.6.0 (defaults/noarch)
+future-0.18.2 (defaults/win-64)
+huggingface_hub-0.10.1 (defaults/win-64)
+idna-3.4 (defaults/win-64)
+libuv-1.40.0 (defaults/win-64)
+ninja-1.10.2 (defaults/win-64)
+ninja-base-1.10.2 (defaults/win-64)
+packaging-22.0 (defaults/win-64)
+pycparser-2.21 (defaults/noarch)
+pyopenssl-22.0.0 (defaults/noarch)
+pysocks-1.7.1 (defaults/win-64)
+pytorch-1.12.1 (defaults/win-64)
+pyyaml-6.0 (defaults/win-64)
+regex-2022.7.9 (defaults/win-64)
+requests-2.28.1 (defaults/win-64)
+tokenizers-0.11.4 (defaults/win-64)
+tqdm-4.64.1 (defaults/win-64)
+transformers-4.24.0 (defaults/win-64)
+typing-extensions-4.4.0 (defaults/win-64)
+typing_extensions-4.4.0 (defaults/win-64)
+urllib3-1.26.14 (defaults/win-64)
+win_inet_pton-1.1.0 (defaults/win-64)
+yaml-0.2.5 (defaults/win-64)
2023-01-25 19:14:44  (rev 3)
+click-8.0.4 (defaults/win-64)
+flask-2.2.2 (defaults/win-64)
+itsdangerous-2.0.1 (defaults/noarch)
+jinja2-3.1.2 (defaults/win-64)
+markupsafe-2.1.1 (defaults/win-64)
+werkzeug-2.2.2 (defaults/win-64)
\Anaconda3\envs\aiml\lib\site-packages\torch\nn\functional.py", line 2503, in layer_norm
return torch.layer_norm(input, normalized_shape, weight, bias, eps, torch.backends.cudnn.enabled)
RuntimeError: "LayerNormKernelImpl" not implemented for 'Half'
<IP_ADDRESS> - - [25/Jan/2023 19:16:13] "POST / HTTP/1.1" 500 -
I guess I am using pytorch and you are using torch, right?

I seem to be running into a similar problem, here is the console output:
<IP_ADDRESS> - - [25/Jan/2023 11:35:51] "GET / HTTP/1.1" 200 -
[2023-01-25 11:36:00,931] ERROR in app: Exception on / [POST]
Traceback (most recent call last):
File "C:\Python39\lib\site-packages\flask\app.py", line 2525, in wsgi_app
response = self.full_dispatch_request()
File "C:\Python39\lib\site-packages\flask\app.py", line 1822, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Python39\lib\site-packages\flask\app.py", line 1820, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Python39\lib\site-packages\flask\app.py", line 1796, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
File "C:\Users\Banned\Downloads\Cryo\ChatGPT-at-Home-main\app.py", line 38, in index
response_text = chatbot_response(input_text, history)
File "C:\Users\Banned\Downloads\Cryo\ChatGPT-at-Home-main\app.py", line 24, in chatbot_response
response_text = generator(input_text, max_length=1024, num_beams=1, num_return_sequences=1)[0]['generated_text']
File "C:\Python39\lib\site-packages\transformers\pipelines\text_generation.py", line 210, in call
return super().call(text_inputs, **kwargs)
File "C:\Python39\lib\site-packages\transformers\pipelines\base.py", line 1084, in call
return self.run_single(inputs, preprocess_params, forward_params, postprocess_params)
File "C:\Python39\lib\site-packages\transformers\pipelines\base.py", line 1091, in run_single
model_outputs = self.forward(model_inputs, **forward_params)
File "C:\Python39\lib\site-packages\transformers\pipelines\base.py", line 992, in forward
model_outputs = self._forward(model_inputs, **forward_params)
File "C:\Python39\lib\site-packages\transformers\pipelines\text_generation.py", line 252, in _forward
generated_sequence = self.model.generate(input_ids=input_ids, attention_mask=attention_mask, **generate_kwargs)
File "C:\Python39\lib\site-packages\torch\autograd\grad_mode.py", line 27, in decorate_context
return func(*args, **kwargs)
File "C:\Python39\lib\site-packages\transformers\generation\utils.py", line 1437, in generate
return self.sample(
File "C:\Python39\lib\site-packages\transformers\generation\utils.py", line 2443, in sample
outputs = self(
File "C:\Python39\lib\site-packages\torch\nn\modules\module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "C:\Python39\lib\site-packages\transformers\models\opt\modeling_opt.py", line 932, in forward
outputs = self.model.decoder(
File "C:\Python39\lib\site-packages\torch\nn\modules\module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "C:\Python39\lib\site-packages\transformers\models\opt\modeling_opt.py", line 697, in forward
layer_outputs = decoder_layer(
File "C:\Python39\lib\site-packages\torch\nn\modules\module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "C:\Python39\lib\site-packages\transformers\models\opt\modeling_opt.py", line 323, in forward
hidden_states = self.self_attn_layer_norm(hidden_states)
File "C:\Python39\lib\site-packages\torch\nn\modules\module.py", line 889, in _call_impl
result = self.forward(*input, **kwargs)
File "C:\Python39\lib\site-packages\torch\nn\modules\normalization.py", line 170, in forward
return F.layer_norm(
File "C:\Python39\lib\site-packages\torch\nn\functional.py", line 2205, in layer_norm
return torch.layer_norm(input, normalized_shape, weight, bias, eps, torch.backends.cudnn.enabled)
RuntimeError: "LayerNormKernelImpl" not implemented for 'Half'
<IP_ADDRESS> - - [25/Jan/2023 11:36:00] "POST / HTTP/1.1" 500 -

The error seems to be occurring in the chatbot_response function on line 24, when the generator function is being called. The error message seems to indicate that an exception is being raised by the generator function, which is likely caused by an issue with the input being passed to the function or with the model configuration.
It may be necessary to check the input_text and history variable to see if they are the expected values and also checking the configuration of the model.
It's also possible that the error is caused by a bug in the version of the Transformers library.

It looks like changing line 15 in "app.py" to:
generator = pipeline('text-generation', model=f"{MODEL_NAME}", do_sample=True, torch_dtype=torch.float32)
Fixed the issue for me.

removing, torch_dtype=torch.half also helps

So this issue looks to be closed :)


swift format fails when using new sending keyword

swift format fails when using new sending keyword.
Steps To Reproduce:

Create a Foo.swift with following content and save:

struct Foo {
  var bar: String
}

func whatever(_ foo: sending Foo) {

}

Run swift format Foo.swift on cli.

Results:
Observed:
Invocation fails: /Users/fabian/Developer/test.swift:5:30: error: unexpected code 'Foo' in parameter clause.
Expected:
swift format succeeds.
Notes:
Fails with Swift from Xcode-beta and swift-6.0-nightly on linux.

Should be fixed by:

main: https://github.com/swiftlang/swift-syntax/pull/2835
release/6.0: https://github.com/swiftlang/swift-syntax/pull/2837
release/6.0.0: https://github.com/swiftlang/swift-syntax/pull/2838
release/6.0.1: https://github.com/swiftlang/swift-syntax/pull/2839


Can't add 'nativeToolOptions' to build preset

Platform and Versions

Operating System: Windows
CMake Version: 3.20.2
VSCode Version: 1.56.2
CMake Tools Extension Version: 1.7.3

I am new to CMake Presets. I want to add 'nativeToolOptions' to my preset but the schema seems not to allow it:

My reason for wanting to specify nativeToolOptions is to add argument "-v" to ninja.
I guess I am misunderstanding something. Should I be able to specify nativeToolOptions  in the preset?

I was trying to add nativeToolOptions to a configure preset but it is a build preset parameter.


[SPARK-34236][SQL] Fix v2 Overwrite w/ null static partition raise Cannot translate expression to source filter: null

What changes were proposed in this pull request?
For v2 static partitions overwriting, we use EqualTo  to generate the deleteExpr
This is not right for null partition values, and cause the problem like below because of ConstantFolding
SPARK-34223: static partition with null raise NPE *** FAILED *** (19 milliseconds)
[info]   org.apache.spark.sql.AnalysisException: Cannot translate expression to source filter: null
[info]   at org.apache.spark.sql.execution.datasources.v2.V2Writes$$anonfun$apply$1.$anonfun$applyOrElse$1(V2Writes.scala:50)
[info]   at scala.collection.immutable.List.flatMap(List.scala:366)
[info]   at org.apache.spark.sql.execution.datasources.v2.V2Writes$$anonfun$apply$1.applyOrElse(V2Writes.scala:47)
[info]   at org.apache.spark.sql.execution.datasources.v2.V2Writes$$anonfun$apply$1.applyOrElse(V2Writes.scala:39)
[info]   at org.apache.spark.sql.catalyst.trees.TreeNode.$anonfun$transformDown$1(TreeNode.scala:317)
[info]   at org.apache.spark.sql.catalyst.trees.CurrentOrigin$.withOrigin(TreeNode.scala:73)

The right way is to use EqualNullSafe instead.
Why are the changes needed?

bugfix
Does this PR introduce any user-facing change?

no
How was this patch tested?

an original test to new place

cc @cloud-fan @dongjoon-hyun @HyukjinKwon @maropu thanks for reviewing

cc @cloud-fan @dongjoon-hyun @HyukjinKwon @maropu thanks for reviewing

Test build #134489 has started for PR 31339 at commit 6a40120.

Test build #134489 has started for PR 31339 at commit 6a40120.

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/39075/

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/39075/

also cc @rdblue

also cc @rdblue

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/134489/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/134489/

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/39075/

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/39075/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/39075/

Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/39075/

I'm merging in to unblock the other bug fix https://github.com/apache/spark/pull/31336 , reviewers please keep leaving comments if you have any.
Thanks, merging to master/3.1!

I'm merging in to unblock the other bug fix https://github.com/apache/spark/pull/31336 , reviewers please keep leaving comments if you have any.
Thanks, merging to master/3.1!


Update documentation with improved Cocoapods workflow

This is to resolve https://github.com/facebook/react-native/issues/3440

FYI @ide

lg2m
Facebook Community Bot<EMAIL_ADDRESS>周日上午6:52写道：

By analyzing the blame information on this pull request, we identified
@tjwudi https://github.com/tjwudi, @andrewsardone
https://github.com/andrewsardone and @vjeux https://github.com/vjeux
to be potential reviewers.
—
Reply to this email directly or view it on GitHub
https://github.com/facebook/react-native/pull/3490#issuecomment-149018416
.

Thanks!


Shortcodes for Image references in HTMLText fields

Carrying on from a discussion at https://github.com/silverstripe/silverstripe-framework/pull/4328#issuecomment-114239415, there seems to be a long term issue with the CMS where images inserted in to a HTMLText field via HTMLEditorField are not properly linked back to the image object.
When a HTMText field is saved, any resampled images are generated as necessary and a fully translated URL is used to reference the resampled or original image. This causes a couple of problems:

If the referenced resampled image is deleted from the filesystem (e.g. using Image::deleteFormattedImages()) any links to that image from SiteTree or other objects will be broken until the object containing the link is re-saved, which triggers re-generation of the image.
If the original Image is renamed in the CMS, any references to that image from a HTMLText field will no longer be able to find the original image so will not be able to be resized or regenerated anymore.

Think a good solution would be to make img tags in HTMLText use ShortCodes, just like internal hyperlinks do. This way they will be evaluated whenever the content is displayed and the images can be regenerated if necessary, and since the image will be referenced by ID it won't matter if the image is renamed. This should also protect against any future changes to filename output for generated images.

I think that's a great (and necessary) idea! And if we can make this happen, I would personally say it would make sense for flush=all to remove all resampled images, since they'll be regenerated through the shortcodes anyway.

+1

I like this idea (I’m sure it was suggested in a ticket before too, perhaps the asset abstraction one?). The only barrier to overcome is how to load  when we’re editing in the CMS

Perhaps it should be converted just before display and just before saving?
The src attribute needs to hold the shortcode in the database, but when displaying it in the CMS, it could be converted into the evaluated version, while the shortcode could be kept in something like a data-src attribute. Which is then converted back again just before saving.

Yeah I think something like what @JorisDebonnet suggested is probably the go and there must already be some manipulations like that taking place to add the interactivity to image and video elements so hopefully we can just tweak that.
It would be really nice to do this in a re-usable way so that any shortcode could be rendered properly with in the editor view, and clicking the rendered content could open a modal editing form, like what happens in @sheadawson's shortcodable module
Also, while  would probably be the easiest approach it might be worth considering not including any html markup for the image e.g. [image,id=5,width=500,height=250,class=leftAlone]... I don't know how feasible that is but by not locking the images down to a specific format it would give template designers (with some developer help) freedom to implement a responsive and/or lazy loading image strategy and change the final output as appropriate for different contexts.

This module might be interesting to look at regarding some of this discussion - https://github.com/sheadawson/silverstripe-responsive-wysiwyg-images. Uses shortcodes for responsive images in the wysiwyg. Doesn't solve the issue with deleted resampled images, but that could be done easily by generating the resampled images in the shortcode parsing function.

Sweet module Shea! That would definitely be handy to look at as a starting point.
@kinglozzer you're right - I just had a skim through the Asset Abstraction RFC and it does indicate that images would need to start using shortcodes as part of that change. So I guess this issue could be closed or maybe it's good to have a place to discuss this specific issue?
For a generic way to present shortcodes (including Images) in HTMLEditorField, would something like this be possible:

When loaded in to the CMS, HTMLText content is parsed and any shortcodes rendered as they would be in templates, with the difference that each shortcode has an additional div or span wrapped around it as appropriate, with a shortcode css-class and all shortcode properties attached as data attributes.*
Content in these wrappers can be presented a bit differently to distinguish them as shortcodes - perhaps with a border and/or translucent coloured overlay indicating they can't be directly edited like the surrounding wysiwyg content, but clicking the content opens a modal editing form
After editing the shortcode attributes and submitting the modal form, perform an ajax request to re-render the edited shortcode content and update it within the wysiwyg content
Before saving the content, parse it again and turn any .shortcode divs or spans back in to shortcodes

*Example:
[image, id=1, alignment=left, width=120, height=106, alt='The SilverStripe Logo', caption='This is an image caption']

becomes

This is an image caption

I don't really see the value of re-impementing HTML using square brackets? The use of shortcode for generating the img src attribute mirrors the use in a href which has worked for some time.
Rendering any shortcode correctly automatically in the WYSIWYG editor seems counterproductive: the implementor of a shortcode needs to decide what the best preview representation would be.
However, having a facility for shortcodes to be transformed to and from placeholder content would be nice. We already have some kind of API for this (the oembeds use it), but I'm not sure how easy to use / well documented the APIs for this are.

the implementor of a shortcode needs to decide what the best preview representation would be

I agree - and that's why I don't want to store the shortcode object as html at all :) if we did things this way it means you could easily render the shortcode data differently in different contexts.  It would give us flexibility to decide what to do with the data in templates, rather than having to use the HTML we've saved in the HTMLText field. By default you might have the same render mode everywhere but you'd have the option of changing this if you want to.
For an  tag the current approach works fine because you probably won't want to change the content - but  has become quite a complex beast over the past few years.

You really don'	t need to add any additional html wrappers at all. The shortcode ONLY needs to generate the src attribute, and doesn't include class or other attribute values.
In the case of  I could see us extending the shortcodes to include width and height, but only for the sake of generating the thumbnail on render.
In the near future we'll be developing shortcodes for non-image objects (i.e. direct references to DBFile values) so there will need to be a generic approach to shortcodes for images.
This is how I would imagine the behaviour would work;
What is saved in the database

What is present in the HTML editor during edit (processed via PHP not frontend logic)

The media dialog would be responsible for modifying the "width" and "height" properties on both the html tag, as well as the shortcode values.
On save, the "src" preview tag is replaced with the data-shortcode value, which is omitted before save.
On render, File::handle_shortcode or DBFile::handle_shortcode could read these values, and perform any resize / thumbnail regeneration as necessary. This means that there is no risk of missing thumbnails breaking images, as they are regenerated on demand.

Yeah I agree that sounds fine and is all you would need to do to preserver the current functionality. I'm just trying to think of the future though and how we can introduce some flexibility as the current approach to images is out of sync with modern web design practices. So imagine if you could store this in the HTMLText field:
[image, id=1, width=500, height=250]

and you got this in TinyMCE

and this on the front-end site

It could give you the power to render the shortcode data however you like, and change it at will, detaching the content from the presentation. This is very relevant for images - the old 'one size for all devices' approach really isn't practical anymore but there isn't a single approach that is right for all circumstances either, so I think it would be quite an improvement to abstract this.
The idea of the extra html wrappers is that it could be an easy and consistent way of informing TinyMCE that everything contained within the wrapper is pre-rendered, and clicking anything within the wrapper needs to trigger an editing form. The rendered content might be just a simple placeholder or it might be the same content you'd see in the front-end depending on what the developer wants. Also with an extra html wrapper it would be a snap to add some extra CSS styling in the editor context to highlight shortcodes. Lastly, currently TinyMCE doesn't play nicely at all with block level shortcodes, it wraps a
 element around them - then if the shortcode renders a div you've got broken HTML. Having an element around the shortcode fixes this.

I agree with Jono on future proofing image representations by using full shortcodes instead of an  tag with a shortcode attribute. We've ignored the responsive images topic long enough in core - there's around 60% browser support for srcset already (http://caniuse.com/#search=srcset).
My only concern is the ability of TinyMCE to handle this seamlessly. @sheadawson Has adding a wrapper
 worked out OK in your module? https://github.com/sheadawson/silverstripe-responsive-wysiwyg-images/blob/master/javascript/editor_plugin.js#L74

@chillu that  is followed by .html(), so it doesn't ever exist beyond that line of code. Can't remember exactly why I had to do it that way but yeah... you can ignore it :)
The approach I've used in https://github.com/sheadawson/silverstripe-responsive-wysiwyg-images works seamlessly with tinymce and is pretty much exactly what Jono described earlier today: Shortcode stored in DB, transformed into placeholder html element in tinymce, shortcode parsed and rendered in customisable responsive image template in frontend.
I agree with @sminnee that it would be great to have a nice api for transforming shortcodes to and from placeholder content

Does this mean that tinymce ends up a glorified SilverStripe template parser, just with another syntax? We would have to work all of this functionality into the DBFile tag generator in any case, except that content editors have less control over the resulting markup of the file being linked.
Not that I'm entirely against this idea, I just need to know where the functionality here ends, and which problems we are solving need to be solved.

Just curious, are we talking about TinyMCE 3 or 4 here? If it's a lot of complicated work on 3 anyway, perhaps it's worth considering this at the same time.

Does this mean that tinymce ends up a glorified SilverStripe template editor, just with another syntax?

@tractorcow no I don't think so. We're talking about two things here

Making existing shortcode capabilities more accessible, by providing a better editing interface for users and a consistent API for developers
Addressing the shortcomings of the current/classic image insertion method, which was fine for fixed width sites but is not well-suited to responsive websites.

So really we're just talking about improving and updating what's already there - it's not a total re-think of what TinyMCE's role is and out of the box there would be very little perceived change for CMS users. It would give developers options though, and could allow at last for a sophisticated way of including rich snippets (structured content) within free-form HTML content areas, as well as a way to render shortcodes differently depending on context. If we want to address no. 2 we may as well deal with no. 1 as part of it and kill two birds with one stone.
I would imagine that as part of this change we might remove the 'insert media' button and replace it with an 'Insert...' menu that lists any registered shortcodes which can be inserted. Out of the box this would include Image and Video (or maybe a generic OEmbed option) but we could make it easy for developers to add items to this list. Actually @sheadawson's shortcodable module already does the bulk of this, so it's probably the perfect starting point to build upon. Along with the rendering approach he used in his responsive images module he might have already provided all the building blocks for implementing this. You're my hero right now @sheadawson :grinning:
@JorisDebonnet I believe we're planning to update to TinyMCE 4 for SS 4.0. so would make sense to do that first or in tandem with this change, as I think the customisations which make upgrading to TinyMCE 4 difficult are the same ones that would need to be refactored for this change anyway. @gavro started work on this with https://github.com/silverstripe/silverstripe-framework/pull/3703

p.s. another practical use case for being able to change the way an entire image tag is rendered (not just the src attribute) is that you could implement intrinsic ratios. This prevents page jump render issues during loading caused by the height of responsive images not being known until fully loaded.

This is now done in master, and we can close. Thanks everyone.

@hafriedlander the original issue described is fixed yes (thanks guys!) but I think the other big idea discussed here is still relevant, which is about introducing a consistent API for inserting and editing shortcodes, and allowing those shortcodes to be rendered differently in different contexts, including placeholder content within HTMLEditorField.
Images and videos should make use of such an API out of the box, and it should be easy for developers to introduce their own shortcodes that are pulled in to the GUI. A big portion of this is already working in @sheadawson's shortcodable module but I think it would make a great core feature.
A key part of this would be allowing shortcodes to be rendered differently depending on context. A shortcode is kind of like an embedded DataObject (an object with a class and some properties) but we're currently limited to rendering shortcodes only one way, everywhere. Would be great to enjoy the same rendering flexibility with shortcodes that we have with DataObjects, so we can make use of the shortcode's properties however is most appropriate in a given context. Rendering a placeholder for the CMS is one example of this. Another example is a video within a blog article - maybe you want to render an interactive video element when the article is viewed on your website, but if someone is reading the article through an RSS reader you want to show some text and a link directing people to watch the video on your website. Same idea could be used to only show certain elements to logged in users, or users with certain privileges.
Example use case: image markup strategies
In the case of image shortcodes in HTMLText objects, you might not want to modify the editing experience or appearance of images in the CMS, but you might want to render them in production using a template that does one or more of these things:

Add SrcSet markup
Implement a lazy-loading strategy
Enforce a max width or height
Use intrinsic ratios to prevent page jump

Is it worth having some more discussion about this on the dev list?


Fix the check for duplicate endpoints

Problem

When adding a dynamic endpoint with endpoint id 0, a duplicate endpoint exists is returned even if there are no endpoints with id 0.

Change overview

For duplicate endpoints, in addition to checking for endpoint id, now also checking for endpointType, which ensures that it has actually been created.

Testing

Tested that endpoint 0 is created successfully.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Added medz/cors Package, PHP CORS (Cross-origin resource sharing) middleware

The Package repo 👉 https://github.com/medz/cors

No longer maintained.


Metadata simplification, change to GitHub issues from LiveFyre

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

README.md
:white_check_mark:Succeeded

docs/api/NuGet-Protocols.md
:white_check_mark:Succeeded
View

docs/api/catalog-resource.md
:white_check_mark:Succeeded
View

docs/api/overview.md
:white_check_mark:Succeeded
View

docs/api/package-base-address-resource.md
:white_check_mark:Succeeded
View

docs/api/package-publish-resource.md
:white_check_mark:Succeeded
View

docs/api/rate-limits.md
:white_check_mark:Succeeded
View

docs/api/registration-base-url-resource.md
:white_check_mark:Succeeded
View

docs/api/report-abuse-resource.md
:white_check_mark:Succeeded
View

docs/api/search-autocomplete-service-resource.md
:white_check_mark:Succeeded
View

docs/api/search-query-service-resource.md
:white_check_mark:Succeeded
View

docs/api/service-index.md
:white_check_mark:Succeeded
View

docs/archive/project-json-and-uwp.md
:white_check_mark:Succeeded
View

docs/archive/project-json-archive.md
:white_check_mark:Succeeded
View

docs/archive/project-json-impact.md
:white_check_mark:Succeeded
View

docs/archive/project-json.md
:white_check_mark:Succeeded
View

docs/consume-packages/Configuring-NuGet-Behavior.md
:white_check_mark:Succeeded
View

docs/consume-packages/Dependency-Resolution.md
:white_check_mark:Succeeded
View

docs/consume-packages/Finding-and-Choosing-Packages.md
:white_check_mark:Succeeded
View

docs/consume-packages/Overview-and-Workflow.md
:white_check_mark:Succeeded
View

docs/consume-packages/Package-References-in-Project-Files.md
:white_check_mark:Succeeded
View

docs/consume-packages/Package-Restore.md
:white_check_mark:Succeeded
View

docs/consume-packages/Package-restore-troubleshooting.md
:white_check_mark:Succeeded
View

docs/consume-packages/Packages-and-Source-Control.md
:white_check_mark:Succeeded
View

docs/consume-packages/Reinstalling-and-Updating-Packages.md
:white_check_mark:Succeeded
View

docs/consume-packages/Team-Foundation-Build.md
:white_check_mark:Succeeded
View

docs/consume-packages/managing-the-global-packages-and-cache-folders.md
:white_check_mark:Succeeded
View

docs/consume-packages/ways-to-install-a-package.md
:white_check_mark:Succeeded
View

docs/create-packages/Creating-Localized-Packages.md
:white_check_mark:Succeeded
View

docs/create-packages/Creating-a-Package.md
:white_check_mark:Succeeded
View

docs/create-packages/Native-Packages.md
:white_check_mark:Succeeded
View

docs/create-packages/Overview-and-Workflow.md
:white_check_mark:Succeeded
View

docs/create-packages/Prerelease-Packages.md
:white_check_mark:Succeeded
View

docs/create-packages/Publish-a-package.md
:white_check_mark:Succeeded
View

docs/create-packages/Sign-a-Package.md
:white_check_mark:Succeeded
View

docs/create-packages/Source-and-Config-File-Transformations.md
:white_check_mark:Succeeded
View

docs/create-packages/Supporting-Multiple-Target-Frameworks.md
:white_check_mark:Succeeded
View

docs/create-packages/Symbol-Packages.md
:white_check_mark:Succeeded
View

docs/docfx.json
:white_check_mark:Succeeded
View

docs/guides/Create-NET-Standard-Packages-VS2015.md
:white_check_mark:Succeeded
View

docs/guides/Create-UWP-Controls.md
:white_check_mark:Succeeded
View

docs/guides/Create-UWP-Packages.md
:white_check_mark:Succeeded
View

docs/guides/api/query-for-all-published-packages.md
:white_check_mark:Succeeded
View

docs/guides/create-packages-for-xamarin.md
:white_check_mark:Succeeded
View

docs/hosting-packages/Local-Feeds.md
:white_check_mark:Succeeded
View

docs/hosting-packages/NuGet-Server.md
:white_check_mark:Succeeded
View

docs/hosting-packages/Overview.md
:white_check_mark:Succeeded
View

docs/includes/install-cli.md
:white_check_mark:Succeeded
View

docs/index.md
:white_check_mark:Succeeded
View

docs/install-nuget-client-tools.md
:white_check_mark:Succeeded
View

This comment lists only the first 50 files in the pull request.
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Support picking levels in @From annotation

It is very common to create conditions just to pick specific levels of a certain factor. It would be convenient to be capable of selecting levels in From annotation.
@From(factor = "xyz", levels = {level1, level2})

Since java doesn't support using Object in annotation, we have to come up with another way.

The intention is reasonable and I think the requirement itself should be satisfied somehow.
I would re-open this issue and try to come up with another solution.

As discussed today, do we have to create such a general feature supporting calling arbitrary method from given? Could we provide a simple built-in function just supporting picking levels?

The feature I'm going to introduce will look like this.
  @ParameterSource
  public Parameter.Factory a() {
    return ParameterUtils.simple(1, 2, 3);
  }

  ...snip...

  @Condition
  public boolean greaterThan(int value, String strThreshold) {
    return value > Integer.parseInt(strThreshold);
  }

  @Given("greaterThan @a 2")
  public void runTest(@From("a") int a, @From("b") int b, @From("c") int c) {
    System.out.printf("runTest:(a,b,c)=(%s,%s,%s)", a, b, c);
  }

runTest will only be executed when a is 3, which is the only level greater than 2. If you create a function isOneOf like following,

 @Condition
  public boolean isOneOf(int value, String... values) {
    return value > Integer.parseInt(strThreshold);
  }

  @Given("isOneOf @b 2,3")
  public void runTest(@From("a") int a, @From("b") int b, @From("c") int c) {
    System.out.printf("runTest:(a,b,c)=(%s,%s,%s)", a, b, c);
  }

You should be able to achieve your goal.
Note that I have not yet decided to support varargs yet. It might not be introduced this time.


CYCLIC TERM for =..

Following code will cause CYCLIC TERM for =..:
:- initialization(main).

bar(X) :- X = [T].

main :-
        bar(L),
        T =.. [foo, A| L],
        write(T), nl,
        halt.

This is working, but still needs more work. Notably causing problems with
?-Prolog. It might seem a step back but it is needed to fix a fundamental
problem.
On Fri, Jul 7, 2017 at 10:32 PM, Xin Wang<EMAIL_ADDRESS>wrote:

Following code will cause CYCLIC TERM for =..:
:- initialization(main).
bar(X) :- X = [T].
main :-
bar(L),
T =.. [foo, A| L],
write(T), nl,
halt.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/trealla-lang/trealla/issues/204, or mute the thread
https://github.com/notifications/unsubscribe-auth/AVqpEol-nShuwAxPN2f7YoSbFjqRUczhks5sLiVngaJpZM4OQ4e_
.

Cool! 👍
I think this issue can be closed now.


After saving a listing, display a "view listing" link next to the save button.

We've heard from at least a handful of people that finding the listing they just saved isn't super intuitive.
After the Save button is clicked, and the listing saves succesfully, display a View listing link next to the save button. We'll want to be sure to do this next to both Save buttons.

If you open a listing in Edit mode, should this link be there from the start?

I'm a bit worried people may accidentally click view listing prior to hitting save. We don't have any type of alert that pops up when attempting to dismiss unsaved changes. If we had that, I'd say show the link all the time.
Since we don't have it, i'd suggest only displaying the link after a successful save.
Thoughts?

I think that's a good point.
Either we should make the view listing link "save and view", or it should only appear after a save when there are no unsaved changes.
Save and View would be a lot easier, I think.
Or we just make the Save button work that way. What are the scenarios where you'd want to save, but not close the edit view and look at the results of the save?

Or we just make the Save button work that way. What are the scenarios where you'd want to save, but not close the edit view and look at the results of the save?

That's a big pandoras box you're opening there.. because the save is an async call. While in most cases it happens in ms's, it's possible (e.g. remote server), it may take several seconds and the user could start doing something else. Abruptly having the UI switch on them is probably not ideal. Someone might click save and then open settings, for example. Someone might click save and decide they want to change something and start adjusting the form (those changes would be lost if we automatically re-routed them to the listing detail view).
I think the right fix would be to always have the link there (once a listing is created) and get "We don't have any type of alert that pops up when attempting to dismiss unsaved changes." integrated.
Since that unsaved changes alert is a bit of scope, we may just want to do this (i'd suggest only displaying the link after a successful save) as a bridge.

Or we just make the Save button work that way. What are the scenarios where you'd want to save, but not close the edit view and look at the results of the save?

One scenario is you add a bunch of shipping options or long description and you want to save your progress before proceeding onto the next section to ensure your work is locked in and saved.
Creating a good listing could take many hours and I don't think it's safe to assume that after every save the user automatically wants to view the listing detail screen.
For comparison, Wordpress has 3 actions for a page: Save Preview and Publish. We'll probably want to move towards this direction at some point in the future.
Wordpress also doesn't automatically show the page after you hit save or publish.

Since that unsaved changes alert is a bit of scope, we may just want to do this (i'd suggest only displaying the link after a successful save) as a bridge.

I still prefer this approach as well, at least for the short term. We can revisit later.

@morebrownies I actually did the hard part for this bug. I have a PR where I implement a confirm box if you attempt to close the modal with unsaved changes.
I'm about to implement the view link, but I've discovered it's not very translation friendly. If some of the translations in that top row are too long, we'll run out of space.

Do you have an alternate place we could show the link? This wouldn't be some much of an issue for the bottom Save button because there's no Heading text there.

ugh yeah that's not going to fly. How about here?

And the bottom button we could still put the link to the left of it


Remove unnecessary duplicate %

@GustavoFernandes : Thanks for your contribution! The author(s) have been notified to review your proposed change. @georgiostrantzas


Added categories and search based filtering to the resource dialog.

This PR adds

Categories to resource dialog
Seach
A new List View component.
Stop generation of unnecessary change event in radio card group when updating property through extensions.

Resource Type Picker

Searching a resource

Selecting a category

Search in a category

Highlighting an option in listview

Listview supports tabbing, arrow keys to change focus and enter/space based selection of options

EDIT:
New list screenshot

Pull Request Test Coverage Report for Build 278655882

2 of 81 (2.47%)  changed or added relevant lines in 4 files are covered.
3 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.04%) to 38.013%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/sql/workbench/api/common/extHostModelView.ts
0
15
0.0%

extensions/resource-deployment/src/ui/resourceTypePickerDialog.ts
0
64
0.0%

Files with Coverage Reduction
New Missed Lines
%

extensions/resource-deployment/src/ui/resourceTypePickerDialog.ts
3
0%

Totals

Change from base Build 277700785:
-0.04%

Covered Lines:
19151

Relevant Lines:
45979

💛  - Coveralls

the filtered views (from 2nd screenshots on), the bottom of the cards in the second rows are clipped.

@aasimkhan30 I still would like to see you using the existing listview object instead of writing our own.

@aasimkhan30 Can you please update the screenshots with the latest changes you've made?

@Charles-Gagnon updated screenshots