Not fully working with new WhatsApp export

Hi, first of all a big thanks for this very easy to setup and very useful project which helps to solve a problem a big tech company is not able or more not willing to solve to keep users in their microcosmos. But thats a different story. ;)
Well, I combined it with TinyWeb and had it setup and runnig within 10 minutes.
Only thing left was to reformat the backup file as the timestamp has changed
from
[16.07.21, 15:03:00] Username: blabla...
to
20.01.22, 13:30 - Username: blabla...
I got this fixed with a regex search and replace in Notepad++
Search for:
([0-9]{2})..[,] :[ ][-]
and replace it with
[\1.\2.\3, \4:\5:00]
and it is recognized.
Only thing i could solve (yet) is the line.replace part for the media files.
As there is no media file linked in the sample data i am not sure what to change.
The line with an attachment nowadays looks like that for example
15.11.21, 15:28 - Username: IMG-20211115-WA0010.jpg (Datei angehängt)
blabla...
Maybe you see what has to be changed and give me a hint?! ;)

Hey,
it seems you are using the Android Version of WhatsApp.
Because this is the current format on iOS:
[27.10.23, 22:42:29] Username: <Anhang: 00000009-PHOTO-2023-10-27-22-42-29.jpg>
I've added an additional line.replace that should account for your format:
https://github.com/sinky/whatsapp-chat-export-viewer/blob/main/app.js#L56

Hey Marco,
yes, you are right, its the Android Version of WhatsApp.
Thanks for the quick fix which worked well after escaping the brackets.
I played around a bit more and to adopt it to the Android version of the export file.
It works so far but somehow it stops after some lines out of the blue so i might have missed some counter or such.
Your format is like that
[27.10.23, 22:42:29] Username: <Anhang: 00000009-PHOTO-2023-10-27-22-42-29.jpg>
and mine is like that
15.11.21, 15:28 - Username: IMG-20211115-WA0010.jpg (Datei angehängt)
So i removed
the square bracket [ at the beginning
the seconds
and the hyphen -
from the regexes.
And in the last function parseWhatsAppDate(dateString) the seconds.
Could you have a look if you see my mistake?!
`
var app = new Vue({
el: '#app',
data: function() {
return {
messages: [],
perPage: perPage,
currentPage: 1,
navNum: 2
}
},
mounted: function() {
var that = this;
axios.get('WhatsApp_Chat.txt')
.then(function (res) {
//console.log(res.data);
var data = res.data;
data = data.replace(/\u200E/g, ""); // Left-To-Right Mark
		var lines = data.split(/(\n|\r)/);

		// Debug: Import kürzen
		lines = lines.slice(0, 200)

		var message;
		lines.forEach(function(line) {
			line = line.replace(/(\r\n|\n|\r)/gm, "").trim();
			if(line.length == 0) { return; }
			//ios format
			//var newMessage = /^\[[0-9]{2}\.[0-9]{2}\.[0-9]{2}, [0-9]{2}:[0-9]{2}:[0-9]{2}.*/.test(line);
			//android format
			var newMessage = /^[0-9]{2}\.[0-9]{2}\.[0-9]{2}, [0-9]{2}:[0-9]{2}.*/.test(line);

			if(newMessage && message) {
				that.messages.push(message);
			}

			if(newMessage) {
				message = {};
				message.lines = [];
				// Timestamp
				//ios format
				//var tmpTimestamp = line.match(/^\[([0-9]{2}\.[0-9]{2}\.[0-9]{2}, [0-9]{2}:[0-9]{2}:[0-9]{2})\]/);
				//android format
				var tmpTimestamp = line.match(/^([0-9]{2}\.[0-9]{2}\.[0-9]{2}, [0-9]{2}:[0-9]{2}) \- /);
				if(tmpTimestamp) {
					message.timestamp = tmpTimestamp[1];
					message.date = parseWhatsAppDate(tmpTimestamp[1]);
					if(that.messages.length > 1) { // Ab der zweiten Nachricht
						message.newDay = !that.sameDay(that.messages[that.messages.length-1].date, message.date)
					}
				}
			}

			// Special Chars < stands for the less-than sign: <
			//line = line.replace(/</g, '<');

			// Media
			line = line.replace(/([a-zA-Z0-9-]+\.jpg)\ <angeh�ngt>/g, '

');
			line = line.replace(/([a-zA-Z0-9-]+\.jpg)\ <angehängt>/g, '

');
			line = line.replace(/\<Anhang: ([a-zA-Z0-9-]+\.jpg|webp|gif)\>/g, '

');
			line = line.replace(/([a-zA-Z0-9-]+\.jpg|webp|gif) \(Datei angehängt\)/g, '

');
			//line = line.replace(/([a-zA-Z0-9-]+\.jpg|webp|gif) \(Datei angeh�ngt\)/g, '

');
			line = line.replace(/\<Anhang: ([a-zA-Z0-9-]+\..+)\>/g, '
Media: $1
');

			// Username
			//var tmpUsername = line.match(/^\[[0-9]{2}\.[0-9]{2}\.[0-9]{2}, [0-9]{2}:[0-9]{2}:[0-9]{2}\] (.+?):/);
			var tmpUsername = line.match(/^[0-9]{2}\.[0-9]{2}\.[0-9]{2}, [0-9]{2}:[0-9]{2} \- (.+?):/);
			if(tmpUsername) {
				message.username = tmpUsername[1];
				message.me = (myNames.indexOf(tmpUsername[1]) > -1);
			}

			// Message
			//var tmpMessage = line.match(/^\[[0-9]{2}\.[0-9]{2}\.[0-9]{2}, [0-9]{2}:[0-9]{2}:[0-9]{2}\] .+?: (.*)/);
			var tmpMessage = line.match(/^[0-9]{2}\.[0-9]{2}\.[0-9]{2}, [0-9]{2}:[0-9]{2} \- .+?: (.*)/);
			if(tmpMessage) {
				// First Line of message with meta
				line = tmpMessage[1];
			}

    // link URLs
    line = line.autoLink()

    // following lines without meta
    message.lines.push(line);

		});

		// Add Last Message
		that.messages.push(message);

		if(jumpToLastPage) {
			that.currentPage = that.pageCount
		}

	})
	.catch(function (error) {
		// handle error
		console.log(error);
	})

	window.addEventListener('wheel', function(e) {
		if(!e.shiftKey) {
			return;
		}
		if(e.deltaY / 120 < 0) {
			that.pageChange('previous');
		} else {
			that.pageChange('next');
		}
	})

	window.addEventListener('keydown', function(e) {
		if(e.shiftKey) {
			return;
		}
		console.log(e.which)
		switch(e.which) {
			case 37:
				that.pageChange('previous');
			break;

			case 39:
				that.pageChange('next');
			break;

			default: return; // exit this handler for other keys
		}
	});

},
methods: {
	pageChange(value) {
		console.log('pageChangeHandle', value);
  switch (value) {
    case 'next':
				if(this.currentPage + 1 <= this.pageCount) {
     	 this.currentPage += 1
				}
      break
    case 'previous':
				if(this.currentPage - 1 > 0) {
     	 this.currentPage -= 1
				}
      break
    default:
				if(value > 0 && value <= this.pageCount) {
      	this.currentPage = value
				}
  }
	},
	changePerPage(n) {
		console.log('changePerPage', n);
		if(n == -1) {
			if(confirm("Achtung! \n\nDiese Aktion ist sehr CPU intensiv und kann in seltenen Fällen als Nebenwirkung ein schwarzes Loch erzeugen. \n\nNe, aber das kann bei >10.000 Nachrichten etwas dauern oder den Browser crashen.") ) {
				this.perPage = -1
			}
		}else{
			this.perPage = n
		}
		if(jumpToLastPage) {
			this.currentPage = this.pageCount
		}
	},
	sameDay(a,b) {
		return a.toDateString() === b.toDateString()
	}
},
computed: {
	messagesCount() {
		return this.messages.length
	},
	pageCount() {
		return Math.ceil(this.messagesCount / this.perPage)
	},
	pagedMessages() {
		if(this.perPage == -1) { return this.messages; }
		var end = this.currentPage*this.perPage;
		var start = end-this.perPage;

		return this.messages.slice(start, end)
	},
	messagesDates() {
		return this.messages.map(function (message) {
			return message.date;
		})
	},
	statsFirstMessageDate() {
		return parseWhatsAppDate(this.messages[0].timestamp);
	},
	statsLastMessageDate() {
		return parseWhatsAppDate(this.messages[this.messages.length-1].timestamp);
	},
	statsTimespan() {
		var timespanMin = this.statsLastMessageDate.getTime() - this.statsFirstMessageDate.getTime();
		var timespanHours = timespanMin / (1000 * 3600 * 24);
		return Math.round(timespanHours)
	}
},
filters: {
	formatDate(value) {
		return value.toLocaleDateString(undefined, {year: 'numeric', month: '2-digit', day: '2-digit',  })
	},
	formatDateDivider(value) {
		return value.toLocaleDateString(undefined, {weekday: 'long', year: 'numeric', month: '2-digit', day: '2-digit',  })
	}
}

});
function range(start, stop, step) {
return Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step));
}
function parseWhatsAppDate(dateString) {
var d = dateString.match(/^(\d+).(\d+).(\d+), (\d+):(\d+)/) //removed last digit
d.shift()
d= d.map(function (elm) {
return parseInt(elm)
})
d = new Date(2000+d[2], d[1]-1, d[0], d[3], d[4]) //removed last digit
return d;
}
`

Hi, first of all a big thanks for this very easy to setup and very useful project which helps to solve a problem a big tech company is not able or more not willing to solve to keep users in their microcosmos. But thats a different story. ;)
Well, I combined it with TinyWeb and had it setup and runnig within 10 minutes. Only thing left was to reformat the backup file as the timestamp has changed from [16.07.21, 15:03:00] Username: blabla... to 20.01.22, 13:30 - Username: blabla...
I got this fixed with a regex search and replace in Notepad++ Search for: ([0-9]{2})..[,] :[ ][-] and replace it with [\1.\2.\3, \4:\5:00] and it is recognized.
Only thing i could solve (yet) is the line.replace part for the media files. As there is no media file linked in the sample data i am not sure what to change. The line with an attachment nowadays looks like that for example
15.11.21, 15:28 - Username: IMG-20211115-WA0010.jpg (Datei angehängt) blabla...
Maybe you see what has to be changed and give me a hint?! ;)

Hi,
I have tried to replicate your proposed solution, however, it is not possible to display the content of the message when running sinky's app, could you share the file with the modification you made.
Greetings.

Hey, it seems you are using the Android Version of WhatsApp. Because this is the current format on iOS: [27.10.23, 22:42:29] Username: <Anhang: 00000009-PHOTO-2023-10-27-22-42-29.jpg>
I've added an additional line.replace that should account for your format: https://github.com/sinky/whatsapp-chat-export-viewer/blob/main/app.js#L56
Hi,
your project is an excellent solution for uploading exported messages, I appreciate your initiative in creating it. Could you tell me if it also works for Whatsapp Groups?

Regards

Hey, it seems you are using the Android Version of WhatsApp. Because this is the current format on iOS: [27.10.23, 22:42:29] Username: <Anhang: 00000009-PHOTO-2023-10-27-22-42-29.jpg>
I've added an additional line.replace that should account for your format: https://github.com/sinky/whatsapp-chat-export-viewer/blob/main/app.js#L56

Hi, your project is an excellent solution for uploading exported messages, I appreciate your initiative in creating it. Could you tell me if it also works for Whatsapp Groups?
Regards

Hey, it seems you are using the Android Version of WhatsApp. Because this is the current format on iOS: [27.10.23, 22:42:29] Username: <Anhang: 00000009-PHOTO-2023-10-27-22-42-29.jpg>
I've added an additional line.replace that should account for your format: https://github.com/sinky/whatsapp-chat-export-viewer/blob/main/app.js#L56

Hi, your project is an excellent solution for uploading exported messages, I appreciate your initiative in creating it. Could you tell me if it also works for Whatsapp Groups?
Regards

Hi and thank you.
I have just created a fresh export of a chat group from WhapsApp on iOS. It works directly with the current code.


Merge codebase

I want to sync the code base to the chat room branch to make a better workflow

LGTM merge!


Update docs to be more user-friendly

A live preview is available there: https://tbouron.github.io/clocker/

@m4rkmckenna Comments addressed


Automatic environment check

🚀 Feature
Lightning could automatically detect a requirements.txt or environment.yml file and check if the packages in the current environment meet the specified versions. If these are not met, it could warn the user.
Motivation
Lightning facilitates and encourages reproducibility of research code. A feature like this could further improve this part and make a user's life easier.
Pitch

Check if there is a requirements.txt (pip, pipenv) or environment.yml (conda) file in the same path as the main script.
If there is, check the versions and warn the user if dependencies are not met.
Optional: Automatically upgrade/downgrade packages via pip / conda call (not sure if this is smart)

Alternatives
Keep as is. The users have to take care of this themselves.
Additional context
I have already implemented this for myself to keep track when working on multiple machines and code repositories.

do you have something else than #1234?


Fix typo / resolution-cycle-down not working

Hi,
stumbled upon this when building a bash script to apply my preferred settings using a bash script and used this file for looking up all the special actions.
I'm pretty sure this should not break anything as for example doing the following works, but the button does nothing:
ratbagctl "Logitech G903" button 7 action set special resolution-cycle-down

Also using cycledown in the command above doesn't work, as that's not defined somewhere else.
So take this change with a grain of salt, but it should resolve a bug when trying to use this.

Currently using this with ratbagctl and I'm loving this software btw! Not even the official GHub (in VM) doesn't seem to offer configuring both leds on G903 (UI bug it seems). This software is so great!!!

The edited function is only ran in tests, and this particular line doesn't actually ever get used. Still, I think good for QOL. :)

Ah cool.
Though the key didn't work on my mouse while the up-version did. So there might be still another typo/bug regarding this.

This may be a problem with the driver or maybe your mouse just doesn't support this action. I would suggest you opening a separate issue for that.

Good point. However I would be surprised if the mouse only supported resolution-cycle-up but not resolution-cycle-down. The non-cycle versions also work without issue.

Will look into this further and open an issue later if I conclude this should work (testing whether ghub has/allows it).

Searched a bit through the code. It seems the test may be the only occurrence and my mouse (Logitech G903 LS) likely just doesn't supports is.
Just tested in a VM and G-Hub only shows an assignable button called DPI Cycle, not any particular direction. So that likely just maps to cycle-up and the down feature doesn't exist for my mouse).
So this is likely just a typo in testing. Feel free to merge this as a typo fix or close it if invalid / not necessary to fix.

So my assumption that it should work and a typo like this just doesn't make it work was wrong. There is no separate issue or fix needed. Thanks again for the clarification!

Merged, thanks!


Add code-repair evaluation

Added code-repair evaluators from CodeXGLUE code-refinement evaluator.

Yes @maxxbw54, sorry I forgot this.


Actions to be done based on feedback

[ ] Modify logistic regression by changing threshold @clsu22
[ ] Make a correlation heatmap to find dependencies between features @Margaret8521

Because we have 9 features and most of them are categorical variables, it's not useful to make a correlation heatmap to find the dependencies between them.


Support for Open API spec 3.0

Only to bear in mind, is there any plan to release and update to support Open API spec 3.0 https://swagger.io/announcing-openapi-3-0/
Thanks!

Very interesting!!

for definitions 2.0 and 3.0 aren't very different because I wanted a full json schema implementation to work instead of the subset that swagger (openapi) 2.0 prescribed
in 3.0 they expanded it to properties that are already supported in our validator
most of the changes in 3.0 pertain to how operations are described with their parameters and responses
that has a big impact on the code generator but if I'm guessing nothing in there is a combinatorial nightmare unlike json schema is
I'll start to work on a new spec implementation in go-openapi/spec3 because I do want to correct some thngs like not using golang's map as a map but rather use sorted maps

spec will be here: https://github.com/go-openapi/spec3

@casualjim, is there any update on openapi 3 support?

@casualjim, check-in again, is there a timeline for openapi 3 support? Or early adoption on another branch?

@JunliWang hello.
We were just discussing that yesterday. It's really a ton of work to lift it to v3.
I am not sure there a many volunteers out there to produce such an effort.
Personnally, I would concentrate my efforts on getting the product stable with full V2 support and more than good enough. It is already good enough for most use cases, and probably at or close to top of this class of products.

I'm curious the status of this. validate still fails, but serve seems to work just fine.
For anybody else curious, I still maintain the v3 definition, I just use api-spec-converter to autogen the swagger v2 definition.

Same here, it fails when I tried to validate, serve works but not perfectly when using oneOf in the response it gave me no response examples.
Any updates!

I don't have time to work on an openapi 3.0 specification.

For validation, Google’s gnostic generates/maintains a schema and some tooling. Hopefully this helps :)

I wanna bump this as all the other tooling I use with my OAS supports V3 now, and this project is the only thing that's keeping me from migrating to OAS 3.

It looks like OpenAPI 3.0 supports multiple hosts. What's the timeline for this release? We need to be able to specify multiple hosts: development, QA, and production.

@Yaima for such a simple use case, such a breaking change is perhaps not needed:
when it comes to generate a server for instance, it suffices to publish a slightly modified spec (e.g. override host with swagger mixin). For generated clients, the host in the spec is just a default which is easily overriden in your client's code.

How does  [mixin-OPTIONS] look like? Could this only have the host information that I need?

yes it's a deep merge of a spec

@casualjim, will something like this work? swagger swagger.json mixin swagger-prod.json What does [OPTIONS] refer to? Is it a json, yml? swagger [OPTIONS] mixin [mixin-OPTIONS]

like this: swagger mixin --output ./swagger-final.json ./swagger.json ./swagger-prod.json

I am getting this error:
2018/11/27 14:36:08 args[0] = ./swagger.json 2018/11/27 14:36:08 args[1:] = [./swagger-prod.json] unexpected end of JSON input Any idea why? Could be the content of the .swagger-prod? I am trying to keep only the fields to change. ie:
{
  "host": "newhost.com",
  "securityDefinitions": {
    "oauth2": {
      "type": "oauth2",
      "flow": "application",
      "tokenUrl": "https://newhost.com/v1/oauth/token"
    }
}

@casualjim what does this mean?
2018/11/29 10:32:39 args[0] = ./swagger.json
2018/11/29 10:32:39 args[1:] = [./swagger-prod.json]
2018/11/29 10:32:39 SecurityDefinitions entry 'oauth2' already exists in primary or higher priority mixin, skipping
This is the information I am changing, but the final json it's not being affected by them.
{
  "host": "abc.def",
  "securityDefinitions": {
    "oauth2": {
      "type": "oauth2",
      "flow": "application",
      "tokenUrl": "https://abc.def/v1/oauth/token"
    }
  }
}

@casualjim If I switch the order of the arguments, it seems to work. Is this correct?
swagger mixin -o ./swagger-final.json ./swagger-prod.json ./swagger.json
2018/11/29 10:40:44 args[0] = ./swagger-prod.json
2018/11/29 10:40:44 args[1:] = [./swagger.json]
2018/11/29 10:40:44 SecurityDefinitions entry 'oauth2' already exists in primary or higher priority mixin, skipping

@Yaima could you please move your questions to a dedicated issue? that would be nicer for people wanting to continue the OpenAPI3 discussion. Thank you.

How about making use of the work done by this project? https://github.com/getkin/kin-openapi

How is in progress?

I'm trying to use swagger to document Openstack Ironic Project. One of the APIs may return different body depending on request query string, for example, if query string has detail=true, it returns node_detail payload, otherwise, return node_overview payload. Thus, oneOf is the solution to address it. At the same time, I do want to use go-swagger to generate both client and server packages. So I try to add notes here.

you can put the query string in the path and that way you can achieve this result with openapi 2.0

Unfortunately, Openstack's APIs have already been defined, and can not changed by me. I'm just trying to use swagger format to document it, and potentially use go-swagger to generate codes with golang.

@leslie-wang I gave up waiting for this and customised my own openapi-generator earlier this year so I could start using OASv3.

Any updates or ETA? Even first version without oneof and all will be great.

Any updates on this?

I convert the OAS3.0 to OAS2.0 by some tools.

With OAS3, it's now possible to express Cookie Auth which doesn't work with OAS3 as securityDefinitions.#.in may only be one of header and query.
Is there a general willingness to move this to OAS3 or will go-swagger simply remain OAS2 only?

I would love this for cookie auth + different url loading.

FYI. I've been using OpenAPI Generator to generate Go clients and server-side code and I'm happy with the result so far.
Ref: https://github.com/OpenAPITools/openapi-generator

"$ref:" is an OpenAPI 3.0 which obviously go-swagger does not support. https://swagger.io/docs/specification/using-ref/
Removing $ref certainly will make go-swagger happy but we will lose the ability to test our apis with other standard tools. (I'm using Swagger UI)
Go-swagger author was reluctant to move to 3.0 since at least 2017 https://github.com/go-swagger/go-swagger/issues/1122 in spite of strong demands.
Should we reevaluate and move to other tools like others? I  really value Swagger and consider it a valuable tool saving us dev/test time.

FYI. I've been using OpenAPI Generator to generate Go clients and server-side code and I'm happy with the result so far.
Ref: https://github.com/OpenAPITools/openapi-generator

Hello, I also visited that site as following your comments.
And I successfully generated a server stub code using the specification file.
However, I could not find how it validates the request and the response object by the specification in runtime like the code that is generated by the go-swagger.
Could you share how did you validate the objects response/request by the specification?

Has anybody found alternatives to go-swagger for generating the server? I really dislike the templates of the openapi generator. The project https://github.com/deepmap/oapi-codegen is generating useable code based on an interface, but it doesn't provide any callback for authentication like go-swagger does.

Nobody ever likes the provided templates for any codegenerators. I don't know if thats a problem with the code generators templates, or if its programmers nature, but you can make your own templates... Take the go-swagger output and make that into a template? Solve it for everyone?

But the official code generator even dictates the folder and file name structure, that can't be changed.

That's not true. Please dig into the documentation and ask their community for help if you get stuck.

Ok, let me rephrase that, it's not possible to really customize it without the need to compile the generator on my own because it got all the paths statically defined within the java class. You are only able to customize the content of the predefined templates which is not defined like I would expect from properly defined packages in Go.

This is not a support channel for openapi-generator and its not the right place for feedback, so lets not hijack the thread.


Only one tab sheet is read

Hi there,
I have an Excel file that contains several tab sheets, named like this: HUN-CZE, HUN-FRA, FRA-ENG and so on. I load the file using this code:
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
DataSet result = excelReader.AsDataSet();
But the resulting dataset contains only one tab sheet, named "Sheet 1".
What am I doing wrong?
Regards,
-Eduardo

I've got a similar problem, I'm receiving sheets recreated by someone else (and I'm not sure what is generating them just yet, just getting stuck on it today) and I can open the excelDataReader and it shows it as valid, yet .Read() always returns false and .AsDataSet() returns a DataSet object with no tables.
Opening and immediately saving via ctrl-s "fixes" the file, just as Ed11 notes above.  Unfortunately, this is for an automation task so doing that is no solution for me.
And, of course, it contains sensitive data but I'm willing to help troubleshoot.  Can even do it live via webex and phone/Skype if that helps.

Update:  After learning far more tonight about the Excel Biff format, I see that there are no ROW records in the files I'm receiving, hence the code in excelDataReader falls straight through once it reaches the EOF record.  All the data in these files are done as LABELSST records with column/row indexes.
  I'll find out tomorrow for sure, but my expectations are low.  :^/
What fun!  Looks like I have some coding to do if they can't properly fix their files.
If anyone else has any input as to the best course of action, I'm all ears!  Maybe you'll think of something more elegant than I'll come up with.

Ah the biff format. I suppose it's possible that the files are valid biff
but non standard implementation. If excel can read them then it should be
possible for exceldatareader to read them.  Probably non-trivial though.
I am super busy to look at it in detail at the moment.  If there was some
way of getting a de-sensitised document that might make it easier for me to
take a quick look in between moments.
Ian
On 13 Feb 2015 05:44, "Namlak"<EMAIL_ADDRESS>wrote:

Update: After learning far more tonight about the Excel Biff format, I
see that there are no ROW records in the files I'm receiving, hence the
code in excelDataReader falls straight through once it reaches the EOF
record. All the data in these files are done as LABELSST records with
column/row indexes.
 I'll find out
tomorrow for sure, but my expectations are low. :^/
What fun! Looks like I have some coding to do if they can't properly fix
their files.
If anyone else has any input as to the best course of action, I'm all
ears! Maybe you'll think of something more elegant than I'll come up with.
--
Reply to this email directly or view it on GitHub.

Thanks for the reply Ian.  Upon presenting evidence of their unconventional file, they offered to send me xlsx files instead (it would have been nice for them to offer it to begin with!).
So, piece of cake, just switch to the XML reader, right?  Nope, their xlsx files contain a Dimension element with a value of "A1" (instead of A1:BY39000 as it should have been) so I was only getting one column.  Would have worked great if they'd left it out!  It's like they're trying to be a pain!
Maybe an option to ignore the Dimension component can be worked into the XMLReader?
So in the end, I ended up using ClosedXML to open the xlsx file and work the columns and rows manually.  Gotta love the clueless workers here at The Phone Company - "it's opens in Excel so it must be right"....

I checked the xlsx spec and it does seem that it is not a valid dimension
record. You could also try npoi, to see if that handles the non-standard
dimension record.
Dimension is not required, so perhaps it could be ignored if invalid. That
would probably require some work though.
On Thu, Feb 19, 2015 at 2:17 AM, Namlak<EMAIL_ADDRESS>wrote:

Thanks for the reply Ian. Upon presenting evidence of their unconventional
file, they offered to send me xlsx files instead (it would have been nice
for them to offer it to begin with!).
So, piece of cake, just switch to the XML reader, right? Nope, their xlsx
files contain a Dimension element with a value of "A1" (instead of
A1:BY39000 as it should have been) so I was only getting one column. Would
have worked great if they'd left it out! It's like they're trying to be a
pain!
Maybe an option to ignore the Dimension component can be worked into the
XMLReader?
So in the end, I ended up using ClosedXML to open the xlsx file and work
the columns and rows manually. Gotta love the clueless workers here at The
Phone Company - "it's opens in Excel so it must be right"....
--
Reply to this email directly or view it on GitHub
https://github.com/ExcelDataReader/ExcelDataReader/issues/27#issuecomment-74988610
.

--
Ian Cox
C.T.O.
Release  Mobile
m:            Matrix Studios, 91 Peterborough Road, London, SW6 3BU
w:            http://www.releasemobile.com
Registered in England.  Number 06323661

Experiencing exact same problem with my client as well. Dimension element has a value of "A1", only one column being loaded out of ~15.

I have an .xlsx spreadsheet that I actually modified one of the sheets and saved. It still only sees the second sheet. This is using O365 Excel 2013. If I remove the second sheet, it sees none. I'm attaching a test file that has the two sheets. This originally came from a customer. I hope it helps, as for now, we were already in UAT, so now I have to find an alternative.
TestGoodFileNoData.xlsx

Estare fuera de la ciudad del 31 de Marzo al 02 de Abril

Para cualquier detalle favor de contactar al Ing. Jesus Cruz<EMAIL_ADDRESS>
Gracias
--

Eduardo Ãlvarez
Departamento de Sistemas
Arcatek, S.A. de C.V.
Tel.: (867) 715-84-20 Ext. 233
MÃ³vil: (867) 129-70-16
Aviso Legal
El contenido de esta comunicaciÃ³n electrÃ³nica no se considera oferta, propuesta, o acuerdo de voluntades, salvo que sea suscrito por firma autÃ³grafa del representante legal de la CompaÃ±Ãa.  El contenido de esta comunicaciÃ³n es confidencial para uso exclusivo del destinatario, por lo que se prohÃbe su divulgaciÃ³n total o parcial a cualquier tercero no autorizado. Si usted no es el destinatario, se prohÃbe su utilizaciÃ³n total o parcial para cualquier fin.

Legal Disclaimer
The content of this electronic communication is not to be considered as an offer, proposal, or agreement unless it is confirmed in a document duly signed by the Company's legal representative. The content of this communication is confidential and for the exclusive use of the addressee. Its total or partial disclosure to any unauthorized third party is strictly forbidden. If you are not the addressee you are forbidden to use it, either totally or partially, for any purpose.

Akzent, S.A. de C.V., con domicilio en Ricardo Margain Zozaya 335, Col. Santa Engracia, en la ciudad de San Pedro Garza GarcÃa, Nuevo LeÃ³n, le informa que los datos personales y profesionales proporcionados por usted, ya sea en lÃnea o vÃa telefÃ³nica, estÃ¡n siendo utilizados para cumplir con la relaciÃ³n jurÃdica que nos pudiera vincular; informarle de nuestros servicios; hacerle llegar comunicaciones y/o contactarlo.
Para mayor informaciÃ³n escrÃbanos a<EMAIL_ADDRESS>

Maybe you "cut" too data preparing test-case: the two Sheets contain same information as the header, nothing more to compare... Could you leave the first Row of data at least?

That's my test case, a spreadsheet with only header. I'll see on Monday if it having no rows other than the header is what's causing it.

Anyhow, taking a look at ReadWorkbook and ReadWorkbookRels...
Your data contains, Workbook as:
<sheets>
	<sheet r:id="rId1" sheetId="2" name="Sheet2"/>
	<sheet r:id="rId2" sheetId="1" name="Sheet1"/>
</sheets>

Relationships as (omitted Type info):
<Relationship Target="worksheets/sheet2.xml" Type="..." Id="rId2"/>
<Relationship Target="worksheets/sheet1.xml" Type="..." Id="rId1"/>

In ReadWorkbook the Library prepares two XlsxWorksheet, reading rels then (see ReadWorkbookRels):

sheet[1] has Id=rId2 and its file is worksheets/sheet2.xml
sheet[0] has Id=rId2 and its file is worksheets/sheet2.xml (same as above)

Hi wizardgsz,
Thanks for taking a look at this so quickly!
Yes, column headers is on. I know I've only been writing code for 26 years, but it seems that having sheets dropped because they don't have any rows would be problematic for most processing. :-) (Your post sounds like you feel this is expected behavior)
I ran through some tests this morning. I created a blank file with header row only. Sees no tables, created a second tab with only header, sees zero sheets. So it appears that it is just dropping sheets that have no rows outside of the header row.
I did some other tests, but eventually, the code sees both sheets. I imagine because the row is there, it is just empty. I'm not creating these files, so I don't have any control over what order sheets are in. I need to be able to see sheets, whether they have rows or not.

Headers on both sheets, only data on second sheet - Only sees second sheet

Take WB that fails, with no data in sheet 1 - added one row, now sees both sheets

Leave headers on second sheet, move both data lines to first sheet, sees both sheets (still has blank rows)

Took both lines of data, moved back to sheet 2, now sees both sheets

Took new copy of sample file

Deleted second sheet, sees zero sheets

Added some data to sheet 1 in row 2, sees sheet 1

Removed data from sheet 1, sees zero sheets.

Took new copy of sample file

Moved data from sheet 2 to sheet 1, sees two sheets

Thanks!

If you need to "keep" sheets without rows (except for header), you can modify readers.
Take a look at AsDataset(bool) and remove the check:
if (table.Rows.Count > 0)
    dataset.Tables.Add(table);
table.EndLoadData();

Is your issue solved @JYasgar64?
Regards

Yes, thank you very much @wizardgsz

I have the same issue as Namlak, Wrong DIMENSION: A1. I also have no influence on the way the files are created.
Problem is: If is has A1 as a Dimension, it will ONLY read column 1 (A) and ignore the other column. After opeing and saving it in Excel, it works. But this is no solution for my program though.

Please, try reading the following bug of POI/NPOI.
Maybe you can apply the same workaround if you have "fixed" dimension.
Anyhow, I can't understand which file format are you referring to (XLS BIFF or Open XML).
Bug 53611 - Incorret dimension set in created workbook sheet xml file

@wizardgsz : It is related to XLSX Files (if that's what you mean).
Unfortunately these Files are supplied via a legacy application which I cannot change nor have access to. I Can open the files using the Interop Method via Excel, but this is slow, considering that my program has to process many of them.
Good to know that this is a Bug in POI/NPOI, very likely that the developer used this for his application.
Is there anything that can be done within ExcelDataReader? Maybe have an extra switch, telling it to ignore the dimension?
Unfortunately I am not proficient in C#. I tried to play around with the Code, but was not able to compile it (something about my Visual Studio not being supported).

Well, as workaround you can just use Interop to get the correct DIMENSION record(s), then you'll read the file using ExcelDataReader Library. This way you still have the speed offered by the Library (together with the right implementation of Microsoft Excel).
To compile the Library you can use VS 2012 (or above) but I can't help you configuring it.

it took me a while to figure this out, but it seems I cannot compile this because one Project is a "portable library". This kind of project is not compatible with Visual Studio Express 2015 which I am using. So seems I cannot get it to csompile.
But as I have read about this Dimension Issue, wouldn't it be a generally helpful setting in the library to be able to override the usage of DIMENSION? I would be very thankful if someone could build this in :-)

So, if you can't use neither develop-branch nor latest .NET Core package, I suggest to download and work on the old CodePlex repository (it did not use PCL library).
As soon as you'll find a solution, we will apply it to the latest build here.
Thanks a lot for your help in solving this issue.

@wizardgsz : Thanks for your advise, this did the trick! .NET Core did not work, I guess the same thing about using the EXPRESS Version. Unfortunately the error message are misleading at best.
BUT: Using the old code from CodePlex did Work! I found the spot (in Excel\ExcelOpenXmlReader.cs) where to tell the code that there is basically No Dimension Value (null) so it went and checked the columns itself. Works like a charm and together with the EDRHelper I can read my Excel Files with 2 lines of code in a Split second, rather than in about a second with the Interop way. HUGE improvement.
Thanks again! it really was helpful. Do you think this would be something worth getting into the "official" code, or is this too specific?

Oh, really fine!
Where and how did you change the reader to fix this issue?

It is more of an hack, don't know enough of the code to say what it breaks :-)
in the file Excel\ExcelOpenXmlReader.cs around Line 130:
in "private void ReadSheetGlobals(XlsxWorksheet sheet)" in the "while (_xmlReader.Read())" loop
I commented out / changed these 2 lines:
                    sheet.Dimension = null;// new XlsxDimension(dimValue);
					//break;

Ok, and your input XLSX has something like this in DIMENSION tag:
<dimension ref="A1:A1"/>
or maybe
<dimension ref="A1"/>
What's the value of dimValue loading your file?
string dimValue = _xmlReader.GetAttribute(XlsxWorksheet.A_ref);
We haven't your test case (see xl\worksheets\sheet###.xml).

The Dimenson is given as A1, although the range "A1:AX4" is filled with data.
This is how the file starts:
<?xml version="1.0" encoding="UTF-8"?> <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><dimension ref="A1"/>
sheet1.zip

Is there some way to get columns widths in ExcelDataReader? I can find only row height.


Bump stdlib 4.4.0->4.13.0

puppet-mongodb uses at least Stdlib::Absolutepath that has been introduced in puppetlabs-stdlib version 4.13.0.

Thanks for the PR @dupgit !


[Bug] Can't Indent Bullet Point When Tabbing

Initial checklist

[X] I agree to follow the code of conduct
[X] I searched issues and discussions and couldn’t find anything (or linked relevant results below)

Affected packages and versions
^6.5.4
Link to runnable example
https://codesandbox.io/s/affectionate-firefly-17ruh4?file=/src/App.js
Steps to reproduce
Use this https://codesandbox.io/s/affectionate-firefly-17ruh4?file=/src/App.js
Expected behavior
When tabbing, the bullet point would go "inwards" like when you're using the playground https://milkdown.dev/playground
Actual behavior
It doesn't
Runtime
Chrome
OS
Linux
Build and bundle tools
Vite

In milkdown v6, the shortcut is Mod-[ and Mod-]. I just changed it to tab in v7.

BTW, if you're new to milkdown, I highly recommend you to start with v7. For now you need to install it with @next label, but it will be released with in this month.


Variable timeout for button sequence

Hi Merdok,
Could you add the option to specify variable timeout when using button sequences?
I've suggest adding the following lines of code to allow both a single value as an array the matches the specified buttons with specific timeouts (@line 1513):
if (seqObj.interval != undefined && Array.isArray(seqObj.interval)) {
if (seqObj.interval.length >= curRemoteKeyNum && isNaN(seqObj.interval[curRemoteKeyNum]) == false) {
tmpInterval = seqObj.interval[curRemoteKeyNum];
}
}
Thx!
Roy

Sorry, i do not understand what your request is? You can already specify an interval which adds timeouts between button presses.

Hi,
Sorry about that, hopefully this explains ut better.
When the sequence gets larger, and especially when opening apps, some commands take longer than others. For example, when opening the music app, pressing OK takes significantly longer than navigating through the icons within the app after it opens.
I (mis)use the music app to turn of the screen while keeping the tv on. The sequence finds the music app, opens it, navigates to the sleep button and presses it. The slowest command takes about 2 seconds to complete. Most are fast, 0.5 seconds.
Without variable timeouts it will take x times 2 seconds to complete the seconds (>10 sec). With variable timeouts it will take x-1 times 0.5 seconds + 2 (4-5 seconds).
With the lines of code I you could specify the sequence normally, but also like this:
"sequence": ["VOLUMEUP","VOLUMEDOWN","MUTE","MUTE"],
"name": "volume_seq",
"interval": [500,500,2000,500]
Roy

Makes and since you already provided some code i will check it out do some testing and if it works then i will add it :)

Included in version 1.6.5. Please try it out and let me know if it works!

Works great! Thanks!


Is there any way to parse a generic type T, conforming to Decodable protocol with <| operator ?

Here is my model:
struct GenericServerResponse <T where T: Encodable, T: Decodable> {

    let status: String
    let errors: [String]
    let debugErrors: [String]
    let data: T
}

extension GenericServerResponse: Decodable {

    static func create
        (status: String)
        (errors: [String])
        (debugErrors: [String])
        (data: T)     -> GenericServerResponse {

            return GenericServerResponse(status: status, errors: errors, debugErrors: debugErrors, data: data)

    }

    static func decode(j: JSON) -> Decoded<GenericServerResponse> {
        return GenericServerResponse.create
            <^> j <|  "status"
            <*> j <|| "errors"
            <*> j <|| "debug_errors"
            <*> j <|  "data"  //Here is an error
    }
}

I got error Ambiguous reference to member <|. I think I made some kind of stupid error here, or may be it is some kind of limitation in Swift compiler (e.g. because it doesn't support higher kinded types)? Then any possible workarounds?. The reason for this: data field can contain any object type which is Decodable, for different type of requests and I don't want to duplicate this model for every request with different data.
P.S Should be marked with question label.

I don't know how this would work, but I'm not sure who's limitation it is. I guess in theory it's the Swift type system, although I don't know how it would figure this out either. You just have a really ambiguous structure here. You need some indication of what you're trying to parse, there's no real way for Argo to be able to figure it out on its own.

Ya, unfortunately I think T is too generic to work here because Argo doesn't know what do decode that as. Would you be able to hold onto data as a JSON? Then you can decode that when the time comes to the appropriate model. Looking at your example more closely, I think that makes sense. I like how your abstracting a server response. I would just hold on to the JSON and then decode to the appropriate model later on down the pipeline.

@AlexanderKaraberov In a similar scenario, I do as @tonyd256 suggested and hold onto the parsed JSON.
struct CloudFlareResponse {
    let result: JSON
    let success: Bool
    let errors: [CloudFlareResponseError]
    let messages: [CloudFlareMessage]
}

extension CloudFlareResponse : Decodable {
    static func decode(json: JSON) -> Decoded<CloudFlareResponse> {
        return curry(self.init)
            <^> json <| "result"
            <*> json <| "success"
            <*> json <|| "errors"
            <*> json <|| "messages"
    }
}

Then, since I'm using Alamofire, I use a custom ResponseSerializer to decode this response type, check for success, and then decode my generic response object type from the JSON already stored.

I'm going to close this for the sake of cleanliness, but please feel free to continue discussing if there's still a question here.

@gfontenot  Yes I agree that this should be closed. I ended up with @tonyd256 solution.


Looking forward to get involved and contribute to the community 🎉

First Name
Faiz
Last Name
Alam
Discord Username (if applicable)
Faiz#7213
Let us understand your motive.
I am a part of HackOn discord community and I saw Siddharth post about this community. I am really excited to be a part of this community of developers and learners. I too am a Web developer and side by side I try my hands on different technologies. I have built many mini projects using python. Currently I am learning machine learning. I can help in anyway possible so that we learn and grow together. We can create new projects collaboratively and create a difference

Hey @FaizAlam 👋🏻
Thanks for requesting an invite! Welcome to SidHacks Community 🎉
Before going ahead, I would want you to complete the below To-Do list.
Your To-Do List ✔

Accept the invitation sent to you via mail.
Change the appearance of this organization to "Public" from the people list here.
Join our Discord Server here.

Accept the Rules from #📓〡rules channel.
Introduce yourself to our community in 👋〡introduction channel.

Feel free to share your excitement on socials with #SidHacksCommunity. You can also tag me @siddharth_hacks.

Close this issue once you complete all the above points.

Looking forward to interacting with you in our community! Welcome once again! 🤓


Opengl2 support for machines with performances works on a igpus

Is your feature request related to a problem? Please describe
A clear and concise description of what the problem is, e.g. "I'm always frustrated when [...]"
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here. Any relevant information for platform specific features could be useful.

As cherno mentioned in his video, we only support OpenGL 4.5, nothing lower. I mention it a second time, please take the time to fill in the form instead of just providing a title.


Cloud Agent to publish PrismDID on behalf of external wallet into VDR

Is your feature request related to a problem? Please describe.
Currently, Cloud Agent can only publish PrismDIDs that are created by the same Cloud Agent into the VDR. Most Edge Clients will never be connected to a full node in order to publish their PrismDIDs to the VDR and it could be useful for certain use cases.
Describe the solution you'd like
It would be great to ask the Cloud Agent to publish a PrismDID created from my Edge Client Wallet through the REST API.
Describe alternatives you've considered
Allowing the Edge SDK to connect directly to icarus (like the cloud agent does) and prepare the right payload which I would need to reverse engineer anyways from the cloud agent code :)

#86 is also related with this 'need'.
But the goal in there is to bypass the Cloud Agent + Prism Node to publish the did:prism

yeah, I feel we can close this issue and keep the discussion over the other one because it has a broader scope and was discussed recently over the weekly meetings.
The end goal is the same, put a DID on chain that was created by the edge SDK.


SIBYLL2.3d

hi! I've been comparing MCEq spectra with CORSIKA7 spectra for my master thesis a lot.
The newest version of CORSIKA7 supports SIBYLL2.3d, but not here in the DB file the SIBYLL tables only go up to SIBYLL2.3c.
Is it possible to update to SIBYLL2.3d?
PS: I've seen multiple talks which had plots with spectra labeled with "MCEq SIBYLL2.3d". Is this mislabeled or a "private" version of MCEq?

@afedynitch can I ask for a short answer? I have the feeling, that I maybe overlooked something...

The 2.3d is the default in the upcoming version. Likely for ICRC, v1.5. It could be out earlier but I’m too busy to complete docs and some cleanup and more tests.

Thank you!


new token required for publishing

Hey @piotr-oles,
Would you be able to generate a new token for publishing please?
The current token has been invalidated due to the eslint incident
Taken from https://travis-ci.org/Realytics/fork-ts-checker-webpack-plugin/jobs/408368034 :
NPM API key format changed recently. If your deployment fails, check your API key in ~/.npmrc.
http://docs.travis-ci.com/user/deployment/npm/
~/.npmrc size: 48
npm WARN notice Due to a recent security incident, all user tokens have been invalidated. Please see https://status.npmjs.org/incidents/dn7c1fgrr7ng for more details. To generate a new token, visit https://www.npmjs.com/settings/~/tokens or run "npm login".
npm ERR! publish Failed PUT 401
npm ERR! code E401
npm ERR! 404 You must be logged in to publish packages. : fork-ts-checker-webpack-plugin
npm ERR! 404
npm ERR! 404  'fork-ts-checker-webpack-plugin' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
npm ERR!

We're currently waiting on @piotr-oles to generate a new token so we can release. (A result of the eslint token problem the other week.)
In the meantime I could publish this to our unofficial fork-ts-checker-webpack-plugin@next channel:
https://github.com/TypeStrong/fork-ts-checker-webpack-plugin
Let me know if that would help and I'll make it happen.

Sorry for delay - token will be updated with #136 :)

Awesome!


global tracking of application and window state

As of right now, chunkwm does not track any state at all.
It simply delegates events to the plugins that subscribe to these.
Because chunkwm does not track state, a plugin is not able to directly subscribe to window events, and the plugin developer must listen to application events and manage the state manually. This involves tracking already running, launched and terminated applications.
For each of these applications, window notifications must be set up using the observer,
and the kAXUIElementDestroyedNotification must be registered per window.
This is quite frankly, not a pleasent experience...
As of now, the API I have provided for dealing with this is pretty usable, at least from my (biased) point of view.
I have more or less implemented a system that does the above in src/plugins/tiling.
This system could potentially be refactored and managed by chunkwm instead.
I haven't given it enough thought to be sure if this is a good thing to do or not, and
so opinions here are welcome.
If applications and windows were tracked by chunkwm, a plugin could simply subscribe to the following events, and would receive a pointer to a macos_window struct:
chunkwm_export_window_focused

chunkwm_export_window_created
chunkwm_export_window_destroyed

chunkwm_export_window_moved
chunkwm_export_window_resized

chunkwm_export_window_minimized
chunkwm_export_window_deminimized

chunkwm_export_window_title_changed

The macos_window struct contains basic information about the window and a pointer to the macos_application it belongs to.  As these values are not being mutated, it is safe for multiple threads to be reading the data.
The memory would be managed by chunkwm and a plugin should not free or otherwise modify it in any way. chunkwm can theoretically free this memory at any time, and so if a plugin wants to store the data, it must create a local copy.
My approach so far with chunkwm is more or less just writing user-code (plugin) first. Figuring out something that I want to do, and how I want the API to be. Then implementing a local version of the API, and finally refactoring code. This also involves moving code that obviously belongs in the common category.

I would probably lean towards chunkwm tracking these things but the correct solution would probably show itself if we come up to a good solution for having multiple plugins cooperating and interacting between them. But I haven't given enough though to come up with a solution I'd recommend.

I've implemented the above on a separate branch for testing purposes. So far it would seem like an ok decision to make..


TestModule.testForkGrouping is not working for TestNG

Reproducer: https://github.com/com-lihaoyi/mill/pull/3799

This seem to original how the testng contrib plugin is implementing the TestFramework API.


Provide a way to troubleshoot [BODY] conditions

Describe the feature request
We have some checks where we use a [BODY] condition. Sometimes the request seems to completely fail and the body cannot be parsed which results in failed condition like this:

It would be great if we could actually get the full response, either in the GUI or maybe just as STDOUT output.
It could be a additional option, which can be toggled:
ui:
  additional-details-on-body-parse-errors: true

Why do you personally want this feature to be implemented?
No response
How long have you been using this project?
8 months
Additional information
No response

Would you be fine if if was just printed in the console if debug was set to true?

I am facing this exactly same issue.
It would be very helpful if we could see the full request (headers, url, body, params, etc) and the full return (headers, body, etc) somehow.

I came up with a bogus condition to show something, maybe it can help you @tiwood:
    conditions:
      - "[BODY] == withheaders"

This condition shows the error received:

Now I need to figure out the correct syntax for this graphql query...

As of 038c8c8d8e312c18dcbaeabc6d20b449cf3ad50f, the response body is now logged if debug is set to true and if the evaluation fails.
Since @tiwood agreed this would be sufficient for their use case, I'm going to close this.
@heitorPB if you think further improvements could be made, please create a new feature request.


A solution to balanced bracket problem

Description
Added solution to the problem of Balanced Brackets, which is implemented using stack in Python language. The code is simple and well-commented.

@chandrikadeb7 Do look into this, as a beginner, one of my first pulls, looking ahead for hacktoberfest_21.
Thank you for this wonderful repository : )


Update repository after transfer

See https://github.com/senzing-garage/garage-roadmap/issues/3

Pull requests:

https://github.com/senzing-garage/g2-sdk-go-grpc/pull/136
https://github.com/senzing-garage/g2-sdk-go-grpc/pull/137
https://github.com/senzing-garage/g2-sdk-go-grpc/pull/138


Allow laravel 9

This PR allows using your package with Laravel 9.

@asantibanez could you take a look at this please?
Thank you!!

Might be time to fork...

@asantibanez
Please pull

@asantibanez
Please pull
for quick solution
in your composer.json change version to: "asantibanez/laravel-blade-sortable": "dev-laravel-9",
and then add add the bottom:  "repositories": [ { "type": "vcs", "url": "https://github.com/lukasleitsch/laravel-blade-sortable.git" } ]

Despues debe ejecutar "composer update" en la terminal

@asantibanez
Please pull
for quick solution
in your composer.json change version to: "asantibanez/laravel-blade-sortable": "dev-laravel-9",
and then add add the bottom:  "repositories": [ { "type": "vcs", "url": "https://github.com/lukasleitsch/laravel-blade-sortable.git" } ]

Then you must run "composer update" in the terminal. thanks!

Hi @asantibanez could you please tag this release? Thanks 😀


[BUG] App crashes after calling createCallAgent

Describe the bug
Updated SDK from 2.9.0 to 2.11.0, after calling createCallAgent app crashes with an exception  'Unexpected CallAgent type'. Crash doesn't happen with version 2.9.0.

Code Snippet
callClient.createCallAgent(userCredential: credentials)
Expected behavior
No crash happens.
Setup (please complete the following information):

OS: 17.5.1
IDE : Xcode 15.3
2.11.0

Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

[x] Bug Description Added
[x] Repro Steps Added
[x] Setup information Added

@raosanat can you take a look?

Looks like you are using the incorrect token for the CallAgent type that you are trying to create. If you are using a MicrosoftTeamsUserIdentifier please follow the documentation and code samples.

Unfortunately the issue is not about setup. It works for SDK version 2.9.0 but not with 2.11.0

So in 2.9.0 version and below we did allow creating a CallAgent with a Teams token. But 2.9.0 and above we have introduced a better experience with introduction of TeamsCallAgent which can be created using a Teams token. Just to confirm you are using a  MicrosoftTeamsUserIdentifier type ?

In my case I don't start a call so I don't use MicrosoftTeamsUserIdentifier or any other identifier. Call is started in backend and I accept it. Just in case I tried to create teams agent  callClient.createTeamsCallAgent(userCredential: credentials) and faced the same crash.
In backend they use Call Automation SDK.
More specifically:
azure-communication-callautomation
Version 1.1.0
azure-communication-identity
Version 1.5.0
azure-communication.networktraversal
Version 1.1.0-beta.2

Hi @raosanat, I am also facing similar issue. Before upgrading to 2.11.0, the following code worked fine for phone calling. After upgrade have started receiving error. Looks like if we don't pass any options, it assumes "teams" by default and hence crashes. Any suggestions to fix the error:
Previously working code:
func setupCallAgent() {
var userCredential: CommunicationTokenCredential?
do {
userCredential = try CommunicationTokenCredential(token: accessToken)
} catch {
print("@@ ERROR: It was not possible to create user credential. (error.localizedDescription)")
return
}
    self.callClient = CallClient()

    self.callClient.createCallAgent(userCredential: userCredential!) {  (agent, error) in

        if let error = error {
            print("@@ ERROR: It was not possible to create a call agent. \(error.localizedDescription)")
            return
        }

        print("@@ Call agent type: \(type(of: callAgent))")
        self.callAgent = agent
        print("@@ Call agent successfully created.")
        self.startCall()
    }
}
**Error after upgrade:**

*** Terminating app due to uncaught exception 'ACSException', reason: 'Unexpected CallAgent type'
*** First throw call stack:
(
0   CoreFoundation                      0x0000000118859571 __exceptionPreprocess + 242
1   libobjc.A.dylib                     0x000000010e4c67e8 objc_exception_throw + 48
2   CoreFoundation                      0x000000011885944f -[NSException initWithCoder:] + 0
3   AzureCommunicationCalling           0x0000000114b8652b __140-[ACSCallClient createCallAgentWithOptionsInternal:callAgentOptions:teamsCallAgentOptions:withCompletionHandler:withTeamsCompletionHandler:]_block_invoke_4 + 363

Re-opening the issue to investigate.

Thanks for reporting the issue, we are working on fixing the bug.

@eskizyen This should be fixed on https://github.com/Azure/Communication/releases/tag/v2.13.0-beta.1, can you please verify?
Feel free to reopen if is still an issue


Prevent multiple async-profiler library deployments

If we try to load the async-profiler library from multiple processes at the same time, loading can fail because we are trying to deploy the app multiple times.
One case where this can happen is when the SDK is used in concurrently executed unit tests.
Caused by: java.nio.file.FileAlreadyExistsException: /var/folders/rl/p7hzvh8943v6xf55qksjjc240000gn/T/redacted-pyroscope/libasyncProfiler-redacted-6bf68b96dcb6e8ec20caa84e1e69e6659f17f5.so
	at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:94)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
	at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
	at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:262)
	at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:482)
	at java.base/java.nio.file.Files.newOutputStream(Files.java:228)
	at java.base/java.nio.file.Files.copy(Files.java:3164)
	at io.pyroscope.labels.io.pyroscope.PyroscopeAsyncProfiler.deployLibrary(PyroscopeAsyncProfiler.java:54)
	at io.pyroscope.labels.io.pyroscope.PyroscopeAsyncProfiler.<clinit>(PyroscopeAsyncProfiler.java:25)

An alternative approach is to use Files.createTempDirectory which will result in separate deployments for each process, though in the case of unit testing this can be wasteful.

Can the current implementation still trigger a race? For example one process is created and in the process of copying the library and the other process already see the library exists and tries to load it while it is still being copied?

Can the current implementation still trigger a race? For example one process is created and in the process of copying the library and the other process already see the library exists and tries to load it while it is still being copied?

You are right, I've switched to the alternative mentioned above - creating a unique temp directory.


Blank page in unexist statuspage slug

⚠ Please verify that this bug has NOT been raised before.

[X] I checked and didn't find similar issue

🛡 Security Policy

[X] I agree to have read this project Security Policy

Description
Using master branch to start up dev backend & frontend server, made a monitor an a statuspage. Then open the statuspages, changed url in address bar to an unexist statuspage slug, the page went to blank.

👟 Reproduction steps

Clone master branch.
Run npm ci --dev.
Run npm run start-server-dev.
Run npm run dev.
Open http://localhost:3000/.
Create a monitor and a status page.
Open the status page.
Change the url in address bar to an unexist statuspage slug.

👀 Expected behavior
Something shows Page Not Found-like message.
😓 Actual Behavior
Blank page
🐻 Uptime-Kuma Version
1.14.0-beta.1
💻 Operating System and Arch
Windows 10 Pro 21H2 x64 19044.1620
🌐 Browser
Microsoft Edge Dev x64 101.0.1210.2
🐋 Docker Version
N/A
🟩 NodeJS Version
v16.13.0
📝 Relevant log output
Both servers shows nothing.

I figured out that this axios request doesn't handle error. Maybe this is the point.

In deep, most non-existing resources are unhandled currently, may plan to review all vue routes later.

It looks like the 404 status page is no longer displaying with an status page which don't exists. The page is blank again within version 1.21.2 like this issue had described from last year


Restrict access to one server

Hi,
thank you for your work. I was wondering, if it is possible to restrict access to one server to only local IPs.
My setup would than be an additional openvpn server, so I could dial in the local network and access it.
Thanks
Jan

What do you mean by local network? localhost? or private network range?
You can configure the IP= in your .env to listen only on a localhost address <IP_ADDRESS>
If you do that, you cannot use letsencrypt to get ssl Certificates as the challenge requires that the webserver is reachable from the Internet.
Other restrictions are possible with Firewalling, but that is not part of this project.

Since no reply we will close it...


Hooked authorisation into Spree Admins only.

Thanks @parndt !

Note: This doesn't know how to redirect BACK to Refinery once authenticated.

I'll leave that as an adventure for you to solve!

I've spend all the day to try to find how to access spree_current_user method in this connector without a solution.
At this time the Refinery doesn't find the current spree user so it redirect to spree login. If i hardcode an admin user, Refinery is able to display the admin.

Fixed in #3


Compilation error on round().astype(int)

The code below does not compile
import numpy as np

# pythran export testFunc(int,float[])
def testFunc(x,A):
    B = np.round(A * x).astype(int)       # <- Does not compile.

The error is:

/Users/jlaroche/temp/JeanPythran/pythran/boost/simd/arch/x86/sse2/scalar/function/inearbyint.hpp:31:14: error: use of undeclared identifier '_mm_cvtsd_si64'
return _mm_cvtsd_si64(_mm_set_sd(a0));
NOTE:
This is on a mac, on linux, the code compiles just fine :(

looks like a boost simd issue... @jfalcou ?

I confirm this is now fixed on master @ b966fe6c6aba34474880e2a086373cf6ee91345e


"ext.flutter.driver" is not found in "extensionRPCs"

this issue still persist while trying

It means the flutter application did not have the ext.flutter.driver module. You may need to add flutter_driver package into your build dependency

I have added one additional node in https://github.com/appium-userland/appium-flutter-driver#usage to ensure the flutter_driver usage meaning. hope it will help.


SPComponentLoader.loadCss truncate url when passed in without protocol

Category

[ ] Question
[ ] Typo
[x] Bug
[ ] Additional article idea

Expected or Desired Behavior
Load CSS without specific protocol should not truncate the url.
Observed Behavior
There is a potential bug in the SPComponentLoader.loadCss method. When a URL will be passed in without any protocol (http / https) the URL gets truncated.
SPComponentLoader.loadCss('//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css');

Result in the following link reference:

When the URL pass to the SPComponentLoader contains the protocol:
SPComponentLoader.loadCss('https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css');

The result always looks like this:

Steps to Reproduce
Create a new web part and add the following lines:
At the top:
import { SPComponentLoader } from '@microsoft/sp-loader';

In the contructor or render method:
SPComponentLoader.loadCss('https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css');

Right now using // is simply not supported and https:// should be used instead. If that's an issue, let's have a discussion offline to understand implications.


Add Calendar

Read calendar using https get request
Announce upcoming events

ACM doesn't really keep the calendar up to date, and the current announcement system has been working. I will reopen this issue if this changes or interest grows again.


VS Studio projects update.

AddOn files added to the projecs.

Renderer devel file added to the project.

Warning C4251 "'type' : class 'type1' needs to
have dll-interface to be used by clients of class
'type2'" ignored

/NODEFAULTLIB option removed.

Signed-off-by: Victor Cebollada<EMAIL_ADDRESS>

Unfortunately this fails for me; there was a number of other [source] files I needed to add before it succeeded in building, such as various (animated) image loaders (gif, webp, etc.), file descriptor monitoring implementation, etc.


Fix changelog section hyperlinks

[x] Closes #8473
[x] Tests added / passed
[x] Passes pre-commit run --all-files

This MR:

~changes version titles from 2021.12.0 to v2021.12.0~
generates links like #v2021.12.0 and #v2-30-0-2020-10-06 instead of #id1, #id2

Can one of the admins verify this patch?

@jrbourbeau Heh, I posted this comment before I saw yours 😜 https://github.com/dask/dask/pull/8534#discussion_r779896899

Thanks @aneeshnema!


New radios / checkboxes performance improvements

Two small commits to improve the performance of the new radios and checkboxes.

remove the 300ms delay on mobile in some situations – @nickcolley can you review?
add the classes to recommended markup – @gemmaleigh can you review?

Does this mean the state is still controlled by JavaScript?
If so this means that the first paint will be quick but there will be the same period of time where users will try to interact with the form and it will not respond.

Yes, that’s true, but state post-interaction will be reflected in visual state when the JS does load. Which do you think is better?