Skip to content

Piero Bosio Social Web Site Personale Logo Fediverso

Social Forum federato con il resto del mondo. Non contano le istanze, contano le persone

I've streamlined theme development in Ktistec.

Moved Technical Discussion
4 2 16
  • I've streamlined theme development in Ktistec. The theming system uses a hierarchy of CSS custom properties and fallbacks. Theme authors can customize a theme at multiple levels:

    Base Colors Only

    Define only base colors like --text-primary, --bg-primary, --bg-input, --semantic-primary, etc. Derived colors will auto-generate using color-mix formulas. For example:

    :root { --semantic-primary: #ffa500; }

    From this one line, theme-appropriate colors like --bg-accent-code, --anchor-color, etc. auto-generate.

    Base Colors Plus Derived Colors

    Define base colors and derived colors. Derived colors use custom values when defined. Undefined derived colors auto-generate. For example:

    :root {
        --text-primary: #333;
        --text-primary-2: #ff0000;  /* red for this specific shade */
    }

    Given this theme, derived shades like --text-primary-1, --text-primary-3, and --text-primary-4 auto-generate. --text-primary-2 is red.

    The simplest possible interesting theme redefines the primary semantic color. The single line above (in Base Colors Only) would result in the following, with button color, link color, disabled, selected, and hover states all derived automatically:

    screenshot of the setting page with the primary semantic color defined

    These changes will be in the upcoming release. Existing themes will continue to work, as is.

  • I've streamlined theme development in Ktistec. The theming system uses a hierarchy of CSS custom properties and fallbacks. Theme authors can customize a theme at multiple levels:

    Base Colors Only

    Define only base colors like --text-primary, --bg-primary, --bg-input, --semantic-primary, etc. Derived colors will auto-generate using color-mix formulas. For example:

    :root { --semantic-primary: #ffa500; }

    From this one line, theme-appropriate colors like --bg-accent-code, --anchor-color, etc. auto-generate.

    Base Colors Plus Derived Colors

    Define base colors and derived colors. Derived colors use custom values when defined. Undefined derived colors auto-generate. For example:

    :root {
        --text-primary: #333;
        --text-primary-2: #ff0000;  /* red for this specific shade */
    }

    Given this theme, derived shades like --text-primary-1, --text-primary-3, and --text-primary-4 auto-generate. --text-primary-2 is red.

    The simplest possible interesting theme redefines the primary semantic color. The single line above (in Base Colors Only) would result in the following, with button color, link color, disabled, selected, and hover states all derived automatically:

    screenshot of the setting page with the primary semantic color defined

    These changes will be in the upcoming release. Existing themes will continue to work, as is.

    @toddsundsted did you use any literature for deciding on the theme basic colors and how to combine them?

    I've been struggling with something very similar a while back and the material design specs seemed too complex for what I wanted, but nothing else popped up on search.

  • System moved this topic from General Discussion on
  • @toddsundsted did you use any literature for deciding on the theme basic colors and how to combine them?

    I've been struggling with something very similar a while back and the material design specs seemed too complex for what I wanted, but nothing else popped up on search.

    no, i'm still trying to figure that out myself. what i have done is build something that seems capable of handling themes that i find that i like. but even there i guess i have ~2-3 more revisions before it is fully capable.

    i did pick semantic ui as my base framework. it has worked well, but it is abandoned. there is a fork called fomantic ui that is supported, but it is also much larger. other frameworks also seemed too large for my tastes, but i will admit to not doing a ton of research.

  • no, i'm still trying to figure that out myself. what i have done is build something that seems capable of handling themes that i find that i like. but even there i guess i have ~2-3 more revisions before it is fully capable.

    i did pick semantic ui as my base framework. it has worked well, but it is abandoned. there is a fork called fomantic ui that is supported, but it is also much larger. other frameworks also seemed too large for my tastes, but i will admit to not doing a ton of research.

    @toddsundsted ok, bookmarked. When I'll circle back to ONI themeing I'll send some feedback your way to compare notes. :D

    With ONI I tried to be "fun" and I generate a basic palette from the images actors upload as their Icon and Image properties (ie, profile and header picture in mastodon terms :D) As you can imagine that can lead to very dubious results.


Gli ultimi otto messaggi ricevuti dalla Federazione
  • @evan said in ActivityPub API Client Reputation:
    > @thisismissem said in ActivityPub API Client Reputation:
    >
    > > I'm not actively working on any Mastodon features at the moment because they can't give credit where credit is due, which means it's not financially viable for me to contribute. I also just opened that ticket explaining the problem. CIMDs would fix.
    >
    > Oof. Let's hope they get around to it before the bad guys do. I'd rather we all don't learn a lesson about security the hard way.

    One could hope, but they weren't willing to back the huge amount of work to deprecate non-expiring access tokens, so that'll probably be exploited first, since there's quite literally millions of non-revoked access tokens out there.

    I tried to do the work to fix it on my own, but it's literally months of work to implement correctly with enough test coverage. Without them either paying me or promoting/acknowledging my work, I ran out of my own budget to be able fix their problems.

    > > You can't Flag a non-activitypub JSON document.
    >
    > I think you can, if you use the Link type.
    >
    > json > { > "@context": "https://www.w3.org/ns/activitystreams", > "type": "Flag", > "id": "https://social.example/activity/flag/1", > "actor": "https://social.example/user/3", > "object": { > "type": "Link", > "mediaType": "application/json", > "href": "https://client.dev/oauth/metadata.json" > }, > "content": "This is an example Flag activity for a CIMD document." > } >

    That'll flag it at this point in time, and the contents can change. And software in the fediverse is unlikely to be able to understand receiving a flag like that.

    > At the very least, manual moderation is important. "This app isn't allowed on this server." That depends on human judgement, CVE reports, whatever.

    Yeah, requires folks to actually build moderation tools for that and ensure moderating against an application revokes its access completely. Revoking access tokens doesn't prevent usage of data already harvested or whatever, but does prevent ongoing abuse

    read more

  • @thisismissem said in ActivityPub API Client Reputation:

    > I'm not actively working on any Mastodon features at the moment because they can't give credit where credit is due, which means it's not financially viable for me to contribute. I also just opened that ticket explaining the problem. CIMDs would fix.

    Oof. Let's hope they get around to it before the bad guys do. I'd rather we all don't learn a lesson about security the hard way.

    > You can't Flag a non-activitypub JSON document.

    I think you can, if you use the Link type.

    { "@context": "https://www.w3.org/ns/activitystreams", "type": "Flag", "id": "https://social.example/activity/flag/1", "actor": "https://social.example/user/3", "object": { "type": "Link", "mediaType": "application/json", "href": "https://client.dev/oauth/metadata.json" }, "content": "This is an example Flag activity for a CIMD document." }

    A reputation system doesn't have to be perfect to be useful. And it's much more important to collect and share negative signals than positive ones.

    I understand that you don't trust app store reviews or ratings but literally billions of other people do. When I go to download an app and it's got a 2.8/5 score, it gives me pause, and I read the reviews to see what the problem is. Sometimes I'll google the app by name. I am unlikely to install it, unless it's really the only software out there that does what I need it to do.

    At the very least, manual moderation is important. "This app isn't allowed on this server." That depends on human judgement, CVE reports, whatever.

    I think I understand the use of the content hash, thanks!

    read more

  • @evan said in ActivityPub API Client Reputation:
    > the ticket you're working on for moderating OAuth clients for Mastodon is a really big deal.

    I'm not actively working on any Mastodon features at the moment because they can't give credit where credit is due, which means it's not financially viable for me to contribute. I also just opened that ticket explaining the problem. CIMDs would fix.

    > > That's why we wrote the CIMD spec.
    >
    > Yes! Using the same identifier for clients in a verifiable way is a big help in having a reputation for using on a single server or multiple servers.

    You cannot rely on the contents of a CIMD not changing though, for that you'd need to calculate like the CBOR CID of the JSON (that's what I do in https://cimd-service.fly.dev)

    > > But OAuth security and trust models are complex and generally proprietary
    >
    > I think you could get to some pretty useful metrics pretty quickly, though. Some good ones to use might be:

    You'd be surprised, but no. Whilst I was on the hachyderm infra team, I ran a tonne of queries for research on the data they have for registered OAuth clients, and there's really not a lot of great insight, besides "this app was added a lot to accounts", which isn't really a good score of trust (see: Cambridge Analytica).

    > - How many people on this server (or other servers) have authorized the client

    Meaning number, overall. The top registered client on Hachyderm was actually a dead research project if memory serves (found that out after reaching out to the author, and promptly revoked all 200k access token it had left on our servers unrevoked)

    > - What the average rating has been (but you need a way to rate clients!)

    Not something 99.9% of people will do meaningfully, see appstore ratings and bridgading of apps to tank their scores.

    > - How many Flag activities have been submitted for this client (you need a way to report clients)

    You can't Flag a non-activitypub JSON document. The majority of fediverse software doesn't support multi-modal moderation reports, Pixelfed is one of the few that does.

    > - Reviews of the client (you need a way to write a review of a client)

    See prior note on App Stores.

    > That data could be local to the server, or could be shared from other trusted servers. A trusted intermediary like IFTAS could be helpful.

    Sure, maybe, but it needs to reference a CIMD at a specific content-hash. Otherwise I can attack that system by changing my metadata to gain more access

    read more

  • You asked this here: https://activitypub.space/topic/fd53b73d-bf92-4e81-a5ae-5a681e4aacd4/flag-activity?_=1768647932631

    There has been no changes in status from what I last said, because I get almost zero time to work on AP T&S. I can probably explain Flag activities better in a call or something than quickly in text.

    read more

  • @julian @pfefferle ActivityPub spec says IDs are URIs, I think that means non-ascii characters should always be encoded.

    Mitra rejects IDs that are not URIs, most of the time this doesn't cause any issues (WordPress was the only notable exception).

    read more

  • @pfefferle@mastodon.social I'm frankly surprised I ran into a side effect of this so soon after you updated the site :laughing:

    Either the PR is to be reverted or perhaps WP should handle requests to the URL encoded address :shrug:

    But after briefing myself on the root cause, it does seem weird that there exist actors with unicode in their ID. Might be if that is the case you should disregard them as non-compliant, who knows.

    cc @silverpill@mitra.social

    read more

  • @julian should work again :(

    read more

  • read more
Post suggeriti
  • 0 Votes
    1 Posts
    8 Views
    Destroying Autocracy – November 27, 2025Welcome to this week’s “Destroying Autocracy”.It’s your source for curated news affecting democracy in the cyber arena with a focus on protecting it. That necessitates an opinionated Butlerian jihad against big tech as well as evangelizing for open-source and the Fediverse. Since big media’s journalism wing is flailing and failing in its core duty to democracy, this is also a collection of alternative reporting on the eternal battle between autocracy and democracy. We also cover the cybersecurity world. You can’t be free without safety and privacy.FYI, my opinions will be in bold. And will often involve cursing. Because humans. Especially tech bros. And fascists. Fuck ’em.The Programmer’s Fulcrum is the future (and smaller) home for a fusion of Symfony Station and Battalion. Its tagline is Devs Defending Democracy, Developing the OMN.You can sign up now and for 2025 get an email with links to each week’s Symfony Station Communiqué and Battalion “Destroying Autocracy” post along with their featured articles. And you’ll be set with TPF after the fusing in January.We are posting on the Fediverse now at @thefulcrum @thefulcrum.dev and original website content will start in 2026.Featured Item(s)The Atlantic writes:Over the weekend, Elon Musk’s X rolled out a feature that had the immediate result of sowing maximum chaos. The update, called “About This Account,” allows people to click on the profile of an X user and see such information as: which country the account was created in, where its user is currently based, and how many times the username has been changed.Nikita Bier, X’s head of product, said the feature was “an important first step to securing the integrity of the global town square.” Roughly four hours later, with the update in the wild, Bier sent another post: “I need a drink.”Almost immediately, “About This Account” stated that many prominent and prolific pro-MAGA accounts, which signaled that they were run by “patriotic” Americans, were based in countries such as Nigeria, Russia, India, and Thailand.@MAGANationX, an account with almost 400,000 followers and whose bio says it is a “Patriot Voice for We The People,” is based in “Eastern Europe (Non-EU),” according to the feature, and has changed its username five times since the account was made, last year.On X and Bluesky, users dredged up countless examples of fake or misleading rage-baiting accounts posting aggressive culture-war takes to large audiences. An account called “Maga Nadine” claims to be living in and posting from the United States but is, according to X, based in Morocco. An “America First” account with 67,000 followers is apparently based in Bangladesh. Poetically, the X handle @American is based in Pakistan, according to the feature.Elon Musk’s Worthless, Poisoned Hall of MirrorsJust FYI, December 25th will be the day I stop exploring the stupidity of our current timeline and the last Destroying Autocracy post. Again, see the notes above about The Fulcrum.We start and end with good news to make the middle bearable.The response to Russia’s War Crimes, Techno Feudalism, and other douchebaggeryEuroNews reports:Life after chatbots: Meet the ‘AI vegans’ refusing to accept a virtual realityKagi is:Introducing SlopStop: Community-driven AI slop detection in Kagi SearchOrion 1.0 ✴︎ Browse BeyondFucking awesome if you use Macs.TechPolicy Press reports:Why Civil Society Is Sounding the Alarm on the EU’s Omnibus RollbackThe Guardian reports:European parliament calls for social media ban on under-16sThe Free Software Foundation Europe shares:Germany Stack: Only Free Software Enables Digital SovereigntyWikimedia announces:Unifying our mobile and desktop domainsDecidim reviews:Decidim Fest 2025: Collective energy, digital sovereignty and a common roadmapThe Conversation reports:Tim Berners-Lee wants everyone to own their own data – his plan needs state and consumer support to workMullvad reports:An important victory – but we still need to stop Chat Control.Ploum says:Don’t Do Snake Oil WritingFiona Fokus says:I don’t care how well your “AI” worksAbso-fucking-lutely.NeutralThe Guardian asks:Has Britain become an economic colony?England always makes sure to ape the shitty parts of America.W3C shares:Preventing Abuse of Digital CredentialsBen Werdmuller covers:The EFF we need nowThe Evil Empire (AKA Autocracy) Strikes BackHeise reports:Analysis of the Digital Sovereignty Summit: Open Source Gets ScoldedWe Are Solomon reports:Hungry for data: Inside Europol’s secretive AI programThe Intercept reports:The FBI wants to use Surveillance Drones with Facial Recognition TechnologyHow Corporate Partnerships Powered University Surveillance of Palestine ProtestsThe Counter Offensive reports:Witkoff was secretly giving Russians advicePariah StatesThe Register reports:CISA warns spyware crews are breaking into Signal and WhatsApp accountsDarkReading reports:DPRK’s FlexibleFerret Tightens macOS GripBig MediaThe Columbia Journalism Review reports:Could Public Skepticism of the Press Actually Be Good for Democracy?It could since most Big Media is owned by right-wing c^nts.ProPublica shares:ProPublica’s May-August 2025 Impact Report: Independent Investigations That Spur ChangeBig TechSage JournalsAlgorithms at your service: Understanding how X’s systems of recommendation likely fueled the far-right riots in the United Kingdom by amplifying visual representations of racist conspiracy theoriesRenée DiResta reports:On the internet, nobody knows you’re a MAGA influencer… in LagosThe Daily Beast reports:Top MAGA Influencers Accidentally Unmasked as Foreign Trolls404 Media reports:America’s Polarization Has Become the World’s Side HustleThe Register reports:Meta knows how bad its sites are for kids, say lawyersMM+M reports:What healthcare marketers need to know about Meta’s censoring of abortion adsThe Markup reports:How American Big Tech guards the profits it extracts around the worldCybersecurity/PrivacyBleepingComputer reports:Cox Enterprises discloses Oracle E-Business Suite data breachHmm, cable companies are literally shit at everything.Code beautifiers expose credentials from banks, govt, tech orgsDarkReading reports:Infamous Shai-hulud Worm Resurfaces From the DepthsThe Register reports:FCC guts post-Salt Typhoon telco rules despite ongoing espionage riskFediverseTerence Eden has:Now witness the power of this fully operational Fediverse!Ghost has:Explore the independent webRadWeb Hosting shares:How to Host Your Own Mastodon Server on a VPS (5 Minute Quick-Start Guide)How to Install Pleroma on Ubuntu VPS (5 Minute Quick-Start Guide)NodeBB announces:NodeBB v4.7.0 — category boost fixes, remote media/emoji in chats, and more!Slightly Decentralized Social MediaConnected Places has:ATmosphere Report – 144CTAs (aka show us some free love)That’s it for this week. Please share this edition of Destroying Autocracy.Follow me on the Fediverse. Or this site via the button in the footer. Or via RSS. Or even our future home in 2026, if you want a head start.Keep fighting!Ringleader, BattalionReuben Walker Follow me on the Fediverse#activitypub #ai #atproto #autocracy #bigJournalism #bigTech #democracy #fascism #fediverse #mastodon #nodebb #pleroma #stopChina #stopIsrael #stopRedAmerica #stopRussia #supportUkraine #technoanarchism #technofeudalismhttps://battalion.mobileatom.net/?p=3992
  • Happy Thanksgiving.

    Fediverso thanksgiving fediverse mastodon
    2
    1
    0 Votes
    2 Posts
    12 Views
    Happy Thanksgiving. Wishing everyone a warm and safe holiday. So thankful for the Fediverse and more importantly my friends here. #thanksgiving #fediverse #mastodon
  • 0 Votes
    1 Posts
    13 Views
    BIG PEERTUBE CO-OP UPDATE: Last night, I interviewed the final steering committee candidate. And just like that—it’s official. We now have seven incredible people (plus me) who’ve come together to co-organize this co-op. Every single person brings something unique—skills, experience, heart—and it honestly feels like we’re assembling a dream team. This moment is a turning point. We’re no longer just talking about starting a co-op. We are one in the making. Over the next few weeks, we’ll be shaping our mission, vision, and bylaws—the foundation for what will eventually become a fully incorporated BC co-operative. It’s wild to think how far this idea has come in just two weeks. And we’re only getting started. #PeerTubeCoop #PeerTube #Cooperative #Fediverse #DigitalCommons
  • 0 Votes
    1 Posts
    9 Views
    Introducing #Hollo. Hollo is an #ActivityPub-enabled single-user microblogging software. Although it's for a single user, it also supports creating and running multiple accounts for different topics. It's headless, meaning you can use existing #Mastodon client apps instead, with its Mastodon-compatible APIs. It has most feature parity with Mastodon. Two big differences with Mastodon is that you can use #Markdown in the content of your posts and you can quote another post. Oh, and Hollo is built using #Bun and #Fedify. https://github.com/dahlia/hollo #fedidev