feat: full frontend - inline player, UI overhaul, recording UI, perf fixes#397
feat: full frontend - inline player, UI overhaul, recording UI, perf fixes#397wowitsjack wants to merge 2 commits intoFredolx:mainfrom
Conversation
…, local player Centralized HTTP client (http.rs) with proxy, user-agent, timeout. Server-side recording system (recording.rs) with active recording management. Background scheduler (scheduler.rs) for EPG and source auto-refresh. Full database backup/restore (backup.rs). Local MPEG-TS proxy (local_player.rs) with ffmpeg + warp for stream transcoding, HEAD-request URL resolution, and broadcast-based lifecycle. All new settings fields, commands, and exit cleanup wired in lib.rs.
…fixes Inline player with HLS.js web engine and embedded MPV support. Complete UI overhaul: sidebar navigation, dashboard with content rows, channel cards, detail panel, now-playing bar, search overlay, view density toggle. Recording UI in channel tiles. CSS design system with custom properties. Performance: OnPush change detection, lazy images, no backdrop-filter blur, reduced dashboard card count. All new settings (networking, scheduler, backup/restore, player engine). Updated README, screenshot, and app metadata.
e01ccf4 to
60485d6
Compare
|
Way too many changes in a single PR, this smells like AI vibecode, sorry. |
It is vibecoded, you literally have a .claude added to the gitignore. |
|
I would be glad to work together and have your contributions as long as you make them yourself, having AI code in this codebase can be legally dubious. |
The .claude directory is created automatically by the Claude Code extension in VS Code. Adding it to .gitignore is standard practice, the same way you'd gitignore .vscode or .idea. It doesn't mean every line of code was AI-generated.
I use AI tooling the same way I use autocomplete, documentation, and Stack Overflow: as part of the development process, not a replacement for understanding the code. Every feature in this PR was designed, tested, and debugged by me. The .claude directory being in .gitignore isn't evidence of anything. That said, it's your project and your call. I respect that. I'll be taking my work in a different direction as an independent project. No hard feelings on the technical disagreement, we just have different philosophies on how software gets built in 2026. |
|
Since I'll be forking independently and doing a clean rewrite, I want to set clear IP boundaries for the unmerged work in this PR and #396: I hereby prohibit you, Frédéric Lachapelle, along with the entire FredTV project from using, deriving from, or copying any of the code, or design of my contributions. You can consider this a formal legal notice, and I am absolutely willing to exercise my legal options should you do so. To be clear: this applies only to the unmerged contributions in these PRs which you chose to reject. Your existing codebase is entirely yours. I'll be doing a clean rewrite with zero shared code. |
Unfortunately, this is not how open source works and I can sue you if you decide to relicense your fork of my project. |
I have no intention of relicensing your code. The plan is a clean rewrite from scratch, not a relicense. Different codebase, no shared code, independent implementation. Threatening to sue a contributor is a choice, though. Especially one who set a boundary around code you explicitly rejected and never merged. |
|
Ok, have fun with Claude 😂 |
The inline player, the recording system, the HLS proxy, the sidebar navigation, the design system. Those are real features solving real user problems. Dismissing it all with "have fun with Claude" after zero code review is exactly the attitude that made me decide to fork. The app can't even embed video playback inline, it shells out to an external mpv window. That's the core limitation these PRs were addressing. Brother I was cleaning up your frankly embarrassing code. Your project, your standards. I wish you well with it. |
|
My code is open source, you are free to fork and modify it as you wish as long as you respect the license. Having people fork my projects and vibecode new features to them is par with the course when it comes to open source nowadays, unfortunately. Have a nice day. |
|
This was hilarious, thanks for rejecting the AI slop, absolutely embarrassing comments from wowitsjack |
|
@wowitsjack You are definitely the more unhinged one in this scenario. 10 points to Griffindor. |
|
@wowitsjack lmfao massive cringe, imagine being this slow thinking 😂 |
|
No wonder @wowitsjack is unemployed 😆 |
|
That was funny |
|
@wowitsjack I don’t think I’ve seen anything so unhinged on GitHub before. Slow claps my guy, congratulations on looking like a total weirdo. 🫠 |
|
Damn, AI is coming for our jobs! edit: sorry wrong chat |
|
@Fredolx is absolutely right in rejecting any PRs which does not fit the owners standards. Not your project, not your decision. @wowitsjack keep in mind that the mindset you show is not advocating to hire you at any position. If you can't deal with criticism or (code) rejection and than crashing out that way you are not fitting in any team. Such, public viewable, behavior is a simple no go. |
|
@Fredolx you should probably limit who can talk on this PR, I know it's possible but I don't know how 😅 As much as I agree with other people here about the author of this PR, there is no need to keep saying it. |
|
|
To all of the people commenting on @wowitsjack 's completely unhinged behavior - your life will be a lot better if you block people and move on. https://github.com/wowitsjack |
|
I don’t have any interest in jumping on the bandwagon, I just want to offer my support towards the most recent comment about blocking Jack. This PR seems to have become rather popular on Reddit and, if you’re here due to that, please just have a bit of a think if you’re in this PR for the right reasons or if you’re here to dogpile on someone you have already decided deserves it. As someone that’s crashed out in a spectacular way like this in the past, publicly too and in a similarly humiliating fashion, I’d suggest that there could be any number of issues going on that made a very calm and kind dismissal of their PR into quite a spiteful and negative experience. Autism, RSD, loneliness, a need to ‘belong’, absolutely any formative experience with someone that’s turned hearing ‘no’ into a threat, especially in a situation like this where the PR was as likely for friendship or social approval as it was for genuinely improving the project. If you’ve decided to judge Jack before walking a mile in his shoes, don’t be surprised if he has blisters you don’t know about. You really don’t need to insult him today. |
|
@JolanUK - I appreciate the perspective you've shared here. You’re right that we don’t always know the internal or external battles someone is fighting, and I apologize for repeating the word "unhinged". It was a poor choice of words for a potentially complicated situation. However, I want to reiterate my main point: no one is inherently owed another person's time or attention, especially when they become abusive. Whatever personal struggles someone may be facing, they do not serve as an excuse to mistreat or harass others. The recommendation to block is not about "dogpiling". It is a tool for individuals to protect themselves from potential future aggressive or abusive behavior. Open source thrives on collaboration, but that collaboration has to be built on a foundation of mutual respect. |
Ah, I may have caused myself to be misunderstood. I didn't in any way aim to suggest you were dogpiling in particular - you weren't. I was referencing the comments belittling the guy for having an objectively quite humiliating experience. There's no way around how irredeemably awful this was - whether it's today, tomorrow, next week or when he has a moment that really puts his behaviour on this PR into perspective, he'll know what he did and it'll hurt. The comments calling him a weirdo or belittling his approach won't help with that, they'll just start to teach him that his own individual struggles shouldn't be viewed with compassion and support but instead mocked on sight. There are a lot of you that had the opportunity to help him to rehabilitate his skillset and attitude (Laracasts is right there, CBT is right there, Spotify is awash with behavioural psychology audiobooks) but didn't and I hope you'll think about that the next time one of these threads hits Reddit. Someone you know or care about might be the person in it. |
|
Assuming its not vibe coded, what makes you think its ok to modify 95 files in a single PR? |
|
@JolanUK Hey, I'm gonna respectfully push back on that a little bit. His behaviour was insulting and threatening and I don't think people should get a pass for that just in case maybe they have mental health issues or something. This is a technical space on the internet, not somewhere that participation awards are given out. Where I think the line should be drawn is to only attack people in terms of the work and contribution itself and never personal or ad hominem. You have been the main one to make it personal by bringing his mental health into question. Calling out his unhinged crashout as being unhinged is simply calling a spade a spade. I do appreciate your sentiment of bringing the human element into the equation though and I think that's important, just in this specific case I am pushing back against that argument. |
Fair. Can't argue with that, and I wouldn't dream of giving off the impression the creator of this PR should be coddled. If it helps to reinforce anything, I've asked Github to get involved because Jack shouldn't get away with how he's acted here (both technically, and behaviourally). I'm firmly on the side of rehabilitation though, not tiptoeing but more importantly, certainly not shaming and I think the two issues should be separated. Jack should quite rightly feel a deep sense of regret for how he's acted, but should also be readily supported in turning that around. I appreciate the comment about divorcing the human aspect, and that perhaps I was unfair in psychoanalysing the guy but when you've made enough of one mistake, you grow the superpower to be able to pick up on when others are doing it too. I don't see a healthy person writing the comments I've seen from him here, and I'd be happy to challenge anyone that does. |
I agree for the most part, although I don't think it matters from our perspective whether he is mentally unwell or not, I don't think we should be speculating on that. Although I'm definitely not stuck on that opinion and could certainly hear an argument that would change my mind. It could also just have easily been me in his position. I like to think much less likely these days, but certainly when I had less hard won experience. The difference between being passionate and being overly emotional is an ultra thin line. If I were to offer advice to Jack at this point it would be to swallow your pride and admit that you acted inappropriately. The community should respect and embrace that and anyone who doesn't should have the same level of shaming applied against them. In my opinion Jack owes Fredolx an apology and that's all. The rest of it is water under the bridge. |
I get that. I don't know if this is really the place (I'd wager it's not), but I believed in it enough to state it in a place where I'm trying to (re)build my career. We're not just seeing a flagrant disregard for development etiquette and a quite unpleasant streak (it's obvious and we all see it), we're watching a lack of self-preservation and an immediate, quite visceral impulsiveness that's causing him to torch his reputation over what looks on the surface to be the most minor slight (which I'm guaranteeing isn't minor to him). There's so much nuance to what's been said here, it's nowhere near as simple as 'this guy's rude, he's mentally ill' and I just want to share that for the avoidance of doubt. I think that can risk minimising mental health in quite a harmful way and that's not who I am. I know what's happening here, it's screaming at me. That said, absolutely needs to swallow his pride, apologise to Fred and move on because Fred matters too and shouldn't have had to experience any of this today. In a way, it'd be quite a shame if that didn't happen. As a side note, glad things are going better for you these days ❤️ |
Just to clarify, you can not. Under Github's ToS, by submitting this PR you license that content under the same terms, and you agree that you have the right to license that content under those terms. That grant was established at the time of submission. And because opensource licenses are irrevocable, once the code has been contributed and licensed under these terms, the grant cannot be withdrawn. So the project as well as public retains the right to use, modify, and distribute the submitted code in accordance with the GPL-2.0 license. And by the way, anyone can see the code, it does not matter you deleted your fork: |
|
wtf?! that user did expect this would be approved? roflmao |
|
wowitsslop! Having .claude on your gitignore is already suspicious enough. Even if no AI was used and jack was telling the truth, isn't 90+ file changes in a PR a bit too much..? |
|
@wowitsjack youre a clown buddy, go hop in your vibed out clown car with the 35 million other vibesloppers and fuc* all the way off. Honk honk 🤡🤡🤡 |
|
I have nothing to do with this PR, but damn I love it! Keep them flowing |
|
Damn, the edits are unhinged. Absolutely the worst way to have handled this. |
|
i was here :D |
found the Theo fan |
I would strongly recommend not going to Claude for legal advice |
|
@wowitsjack imagine being such a ding dong, the fact you refuse to even acknowledge you did use AI and then threaten the creator with frivolous legal action... like dude you cant claim code as yours you didnt make yourself... |
|
Ok. Since the short version was deleted (sangoi did it), here is the autopsy report instead of the postcard. First: not everything here is bad. What is actually good:
Now the part where intent collides with the code. 1. This is still too much PR for one body bagThis review unit is
So this PR combines backend lifecycle, playback plumbing, recording, scheduler behavior, backup/import/export, shell/navigation changes, dashboard/search/sidebar changes, settings redesign, lockfile churn, and CSS churn. That is not “one feature”. That is several integration boundaries pretending to be roommates. The irony is that 2. Tooling is broken before we even get to runtimeThis is the easy blocker because it fails loudly and does not require philosophy.
Why?
So the declared pnpm path is not reproducible in frozen mode. That is not cosmetic. That is the repo telling reviewers “please inspect runtime behavior” while the dependency contract is already lying. 3. Playback contracts drift depending on which path the user hitsThis is where the PR starts getting educational in the wrong way. 3.1
|
|
Holy slop, man. Why not just fork the repo at that point. I think part of writing good software is in the modularity and keeping the system as loosely coupled as possible. If maintainers have to go through an 8k line PR just to figure out what you changed, that’s not a contribution, it’s just bad practice and an immediate rejection. |
|
My cat's name is Mittens |
|
Besides the Scott Shambough story with the OpenClaw Agent, this is ridiculous and probably one of the craziest non automated GitHub crash outs I’ve seen. |
|
haha |
|
Comedy gold, brightened my morning a bit. |
Summary
Complete frontend overhaul building on #396 (backend). Adds inline player, full UI redesign, recording UI, and performance optimizations.
Inline Player
<video>element with VA-API hardware decodeUI Overhaul
Recording UI
Performance
ChangeDetectionStrategy.OnPushon channel cardsloading="lazy" decoding="async"on imagesbackdrop-filter: blur()(WebKitGTK CPU killer)box-shadowanimationSettings
Part 2 of 2 - Depends on #396 for backend.
Test plan