Wednesday, June 3, 2026
12aad7a7-3ee7-45e3-8d82-9b2824dac855
| Summary | ⛅️ Clear until evening, returning overnight. |
|---|---|
| Temperature Range | 17°C to 27°C (62°F to 80°F) |
| Feels Like | Low: 61°F | High: 83°F |
| Humidity | 63% |
| Wind | 12 km/h (8 mph), Direction: 266° |
| Precipitation | Probability: 0%, Type: No precipitation expected |
| Sunrise / Sunset | 🌅 05:35 AM / 🌇 07:56 PM |
| Moon Phase | Waning Gibbous (60%) |
| Cloud Cover | 8% |
| Pressure | 1015.64 hPa |
| Dew Point | 58.69°F |
| Visibility | 6.18 miles |
By Penelope Vasquez Hadjilyra
In April, Cyprus hosted a two-day international climate summit under its EU Council presidency. Scientists, policymakers and government representatives from 18 countries gathered in Nicosia and signed the Nicosia Call for Action 2026, a framework for regional climate cooperation in one of the most climate-vulnerable parts of the world.
The island’s presidential adviser on climate, Costas Papanicolas, stressed that climate science must be linked directly to policy and implementation.
Four days after the May 24 election, Papanicolas was back at a podium presenting the summit’s conclusions. “Things do not look very optimistic,” he said, “and this is clearly due to us and by us, I mean, the inhabitants of this strange planet.”
Scientists at the event reported that every year since 2015 in Cyprus has been warmer than normal, that two-thirds of days in 2025 were hotter than average, and that a possible El Niño is forming, the kind of weather pattern that caused serious water shortages here back in 2007.
This is the scientific reality facing Cyprus. And this is the moment its voters chose to elect a parliament with no environmental voice at all.
For the first time since Cyprus joined the EU, the traditional Green movement fell below the legislative threshold, leaving a total vacuum where environmental advocacy once stood. Every party that won seats treats the environment as a secondary concern at best.
Two of the six parties in the new House have no environmental position in their platforms whatsoever. Meanwhile, Elam, the far-right party that doubled its seats to become the third largest force in parliament, has announced it wants to chair the environment committee.
A party that has campaigned relentlessly against EU green policy now seeks institutional control over implementing it.
It would be easy to be angry at voters. But that would be wrong, and it would completely miss the point.
People are genuinely struggling. Electricity bills have become painful. Rent is out of reach for many families. Food costs more every year.
These are real, grinding hardships, and it is entirely understandable that people voted with their wallets.
The question is not whether voters were right to be angry about the cost of living – they absolutely were.
The question is whether the answers they were offered will actually fix their lives.
Elam’s answer is simple: blame the refugees. Blame the asylum seekers. Blame the migrants arriving by boat. According to this narrative, foreign arrivals are single-handedly responsible for high rents, expensive electricity and rising food prices. It is a story that travels fast precisely because the underlying anxiety is real.
But it is an economic smoke screen.
While rapid population shifts have naturally placed a short-term strain on localised housing supply, the true engine of the rental crisis is structural, driven by a total lack of state-backed affordable housing, unchecked real estate speculation, and decades of inadequate urban planning.
Scapegoating minorities leaves these actual, systemic causes of Cyprus’s economic crisis completely untouched.
Cyprus is the most energy-dependent country in the EU, buying almost all its fuel from abroad and paying a premium every time something goes wrong in the Middle East.
It has a weak public transport network, meaning every family is forced to own a car and absorb petrol price shocks personally. Its agricultural sector has been allowed to shrink to near-irrelevance, leaving the island reliant on imported food whose prices fluctuate with gas markets in the Persian Gulf.
The ultimate symbol of this dysfunction occurred in early 2025, when Cyprus was literally throwing away clean solar energy, cutting the output from rooftop panels because the national grid was never upgraded to handle it, all while continuing to burn imported oil and paying tens of millions in EU emission fines.
None of this was caused by migrants. It was caused by decades of political choices, or the stubborn refusal to make them.
Here is what the parties that won seats have fundamentally failed to grasp: solving these structural problems is the environmental agenda. They are not separate crises.
Cheaper electricity comes from a modernised grid, renewable energy, and decentralised energy communities. Lower commute bills come from investing in robust public transport. More affordable food comes from rebuilding a resilient local agricultural sector.
The cost-of-living crisis and the climate crisis share the exact same roots and the exact same solutions.
A serious environmental programme does not ask people to sacrifice their economic wellbeing for abstract green principles. It offers them a concrete way out of the structural trap that made their lives expensive in the first place.
The economist Mariana Mazzucato has spent years making exactly this argument on the global stage. In her view, the green transition should be treated as a “mission”, a concrete national goal that aligns public investment, innovation and social policy in the same direction.
Crucially, she argues that this approach is inseparable from strong social protections: the transition only works, and only wins political support, if its benefits reach ordinary people first rather than being captured by markets.
The false choice between economic security and environmental responsibility is one of the most damaging myths in modern politics.
When that myth goes unchallenged, the space is quickly filled by those who offer simpler, angrier answers.
Cyprus is a textbook case study in this dangerous dynamic. The island hosted 18 nations to discuss the climate crisis. Its scientists are doing serious, globally respected work on Mediterranean warming. And yet its parliament now contains no one with a clear mandate to act on any of it.
And Cyprus is not alone in this retreat. Across Europe, far-right parties have successfully weaponised opposition to green policy, turning climate action into an existential culture war rather than an economic opportunity.
At every level, local, national, European, and global, the environment is losing ground to short-term political gains.
Cyprus’s election is not an anomaly. It is a symptom. And if we refuse to link economic survival to ecological action, the environment will not be the only loser.
Penelope Vasquez Hadjilyra is a Limassol-based architect, PhD candidate at Frederick University, and founder of the architectural research lab “The way space begins.” An EU Climate Pact Ambassador and member of European environmental standardisation committees, she specialises in urban greenery, transport, and energy innovation. She recently served as the strategy coordinator for Limassol’s participation in the European Cities Mission 2030 program for climate neutrality. She was a parliamentary candidate for Volt Cyprus in the May 2026 legislative elections
President Nikos Christodoulides arrived in Kazakhstan on Tuesday for the first official visit by a Cypriot head of state to the Turkic nation in Central Asia.
The visit coincided with the inaugural direct flight between Larnaca and Astana, a development both governments view as an important step towards strengthening political, economic and touristic bonds.
Upon his arrival in the Kazakh capital, Astana, Christodoulides said the visit reflected a shared commitment to deeper cooperation between the two countries.
“A historic milestone, which opens a new chapter in Cyprus-Kazakhstan cooperation, reflecting our shared commitment to strengthening cooperation, connectivity and ties between our two countries,” he wrote in a post on social media.
The President travelled to Astana aboard the first direct Air Astana flight from Cyprus, accompanied by a government delegation including Foreign Minister Constantinos Kombos, Energy Minister Michael Damianos as well as Deputy Research Minister Nicodemos Damianos.
At Astana airport, Christodoulides was welcomed by Kazakhstan’s Deputy Prime Minister Zhaslan Madiyev, Deputy Foreign Minister Arman Issetov, Deputy Mayor of Astana Yerik Meyirkhanov and the ambassadors of both countries.
Ahead of his departure from Cyprus earlier on Tuesday, Christodoulides described Kazakhstan as a priority partner for the strengthening of political and economic relations.
“Kazakhstan is one of the countries we have priorities for strengthening our political and economic relations,” he said, pointing to the recent establishment of resident embassies in both capitals.
The President is scheduled to hold talks on Wednesday with Kazakh President Kassym Jomart Tokayev and other senior officials.
Discussions are expected to focus on political cooperation, trade, investment, energy, technology and regional developments.
Several bilateral agreements are expected to be signed during the visit, while Christodoulides will also participate in a Cyprus-Kazakhstan business forum bringing together representatives of the two countries’ private sectors.
He is also expected to attend the formal opening of Cyprus’ embassy in Astana.
Christodoulides said improved air connectivity would help expand cooperation across multiple sectors.
“Air connectivity will undoubtedly strengthen efforts to further our political, economic and touristic relations with Kazakhstan,” he said.
The visit forms part of Cyprus’ effort to expand its diplomatic and economic footprint in Central Asia.
Proceedings against Turkish Cypriot activist Oz Karahan and former Sigma TV journalist Giorgos Tattis were adjourned on Tuesday after three prosecution witnesses failed to appear before Nicosia district court.
Defence lawyer Efstathios Efstathiou said the absent witnesses were police officers listed to testify and that no explanation was provided by the prosecuting authority for their absence.
The case was rescheduled for November 16.
Speaking after the hearing, Efstathiou criticised the repeated delays in proceedings, arguing that the absence of prosecution witnesses was creating significant difficulties for the progress of the case.
He also revealed that a request submitted to the attorney-general a year ago seeking a stay of the criminal prosecution remains unanswered.
“For a year and a half now, my clients have been dragged through the courts,” he said.
“Their crime was not violence, not incitement to hatred, but the hanging of a banner and the public expression of a political position.”
Karahan and Tattis also expressed frustration at the latest postponement, saying the continued delays were causing ongoing hardship.
In a joint statement, they questioned why they were required to organise their lives around court appearances while prosecution witnesses could fail to attend without apparent consequences.
“Once again, we are deeply concerned by the continued postponement of the trial of our case,” they said, adding that the absent witnesses were understood to be the police officers involved in their arrests.
The charges relate to an incident during the October 1 Independence Day parade in Nicosia.
Karahan and Tattis were arrested after unfurling a banner reading “Republic of Cyprus the only solution” opposite the official stand.
Police said at the time that banners containing political content were prohibited at the event and alleged that the pair refused instructions to remove it.
Authorities further claimed that one of the men verbally abused officers, that both resisted arrest and that one was additionally accused of assaulting a police officer.
Both defendants pleaded not guilty to all charges when they appeared before the court in June 2025.
Dipa leader, Marios Garoyian, said he submitted his resignation following the party’s poor performance in the parliamentary elections, but confirmed that it was not accepted by the politburo.
Speaking on Ant1, Garoyian said the party had held an initial assessment of the result, describing the electoral outcome as the product of perennial internal schisms.
He said he had submitted his resignation, but “it was not accepted”, adding that the prevailing view within the leadership was that “responsibility was collective”.
Garoyian linked the election result, in which DIPA secured but 3.1 per cent, to structural difficulties within the party that had not been addressed in time.
He also referred to what he described as strong candidacies that were ultimately unable to overcome the organisational advantage of larger parties.
While praising the effort of candidates, he said “the pressure exerted by larger and more organised party mechanisms did not allow them to achieve the electoral results they and the party expected, especially in the provinces”.
Garoyian pointed to external factors as well, including opinion polling which he said influenced perceptions during the campaign period.
He argued that polling data had an impact on ballot preparation and public visibility and suggested it contributed to excluding smaller parliamentary parties from televised debates.
He also questioned how political visibility was allocated during the campaign, saying that public perception had been shaped in a way that reduced the space for smaller formations.
On internal affairs, he said the organisation had relied primarily on its own resources and that “Dipa owes nothing to anyone”, stressing that the result reflected the efforts of its members and candidates alone.
Looking ahead, Garoyian said the party would conduct a broader consultation process, including visits to all districts and a conference aimed at restructuring.
He added that an electoral conference is expected towards the end of the year.
He said the leadership’s focus now is to assess mistakes and prevent their repetition, stating that “a failure, if properly evaluated, can be the basis for future success”.
The possibility of Edek withdrawing from the government remains on the table, party leader Nikos Anastasiou said on Tuesday, indicating that a final decision will be taken at the party’s congress before the end of the year, unless developments force an earlier conclusion.
Speaking on Omega TV, Anastasiou said the party’s participation in government would be assessed in light of what he described as “insufficient political and organisational support” following the parliamentary elections.
He said that “the possibility of leaving the government will be decided at the party’s congress before the end of the year, unless something arises that will force us to leave more quickly”.
Anastasiou also addressed Edek’s failure to secure parliamentary representation for the first time in the party’s electoral history, attributing the result to internal weaknesses and divisions.
He referred to organisational shortcomings and said that “internal sabotage by older executives” had contributed to a loss of voter support, adding that internal rhetoric had in some cases been “toxic”.
The Edek president said the party now faces a period of reassessment and restructuring, with discussions ongoing ahead of its internal congress.
He confirmed that his own position as party leader will also be placed before the central committee, which is scheduled to meet next Sunday.
Commenting on his political future, Anastasiou said his resignation would be available for consideration by the party’s internal bodies, without confirming whether he intends to step down immediately or remain in place during the transition period.
He also outlined potential directions for future political cooperation, stating that Edek could explore closer alignment with the Ecologists and Dipa, while ruling out cooperation with Diko.
He said that “with the entire behaviour of Diko and its president in the run up to the elections, leaves us no room for cooperation”.
Paphos municipality has put on ice a prior decision to rename Kemal Ataturk street while trying to pass the buck to the interior ministry, reports said on Tuesday.
The street is located in the Mouttalos neighborhood, inhabited by Turkish Cypriots prior to the 1974 Turkish invasion.
Earlier, the municipality had voted to change the name of the street, which takes its name from Mustafa Kemal Ataturk, the founder of the Republic of Turkey and the nation’s first president.
The road sign itself is spelled Kemal Atatourk Street.
However, the municipality has not yet acted on its decision to rename the street, nor has it proposed an alternate designation.
The matter appears to have been put on the backburner, daily Politis reports. Since the decision to rename the street was taken in May, the municipal council has not formally discussed the issue again.
The municipality has reportedly written to the interior ministry seeking guidance. For its part, the interior ministry said it has received no such letter, adding that responsibility for naming/renaming streets rests with municipal authorities.
Meanwhile a Disy municipal councilor posted a video on social media calling for the street to be renamed to Michalis Kapetanidis. However, this was a personal suggestion, not a formal motion.
The matter dates back to 2021, when the municipal councilors with the Edek party called for a renaming of the street. At the time, then president Nicos Anastasiades contacted the mayor of Paphos asking him to hold off on the move as it might adversely impact the Cyprus talks process.
Next, a Disy municipal councilor formally requested the name change, with the municipality agreeing and also deciding that they would not seek the government’s opinion.
One reason cited for the delay is administrative in nature. Paphos municipality is currently in the process of codifying a new framework governing the naming and renaming of streets and squares. The prior decision to rename the street in question has therefore been put on hold until the new framework is approved.
Currently, Paphos municipality does not have a regulations manual concerning the naming of streets and squares.
Names as well as street numbers may be proposed by municipal councilors or residents. The municipal council then takes a vote.
In controversial cases, the mayor may put the matter to a local referendum.
Once the municipal council has approved a name, the decision is relayed to the interior ministry. The naming/renaming of a street becomes enshrined in law when the cabinet issues a relevant decree, published in the government gazette.
Dromolaxia-Meneou mayor Kypros Andronikou on Tuesday called on authorities to immediately proceed with measures to combat erosion along the coastlines of the island, warning that the problem was “constantly worsening”.
“There is a huge problem with the erosion of the coastline in the area from the Pervolia Lighthouse to Meneou, which is constantly worsening and causing serious problems both for the access of residents and visitors to the sea, as well as in the operation of the beaches, infrastructure and the local economy,” he said.
He said erosion had already impacted Pervolia, stressing part of it was in “immediate danger of collapse” and needed to be temporarily cordoned off by the municipality as the authorities failed to proceed with necessary works.
“If we had waited for the state services to proceed with the necessary works, there would be no pedestrian walkway today, despite the fact that they had promised in a meeting we had with various departments last September that they would proceed with immediate intervention and protection,” he said.
Andronikou added that necessary studies for measures to prevent erosion had been conducted and that the construction of breakwaters had already begun, however he added that the decision was overturned by a decision of the environmental department, which ruled that milder interventions should have been implemented.
“We pressed for timetables to be set for resolving the erosion problem because we believe that this situation requires immediate measures and actions, taking into account that there have been significant delays due to licensing and bureaucratic procedures. Nature and erosion cannot wait for administrative procedures,” he said.
Expressing his disappointment over how authorities had handled the matter, Andronikou said that he hoped that at least the timetables set for autumn could proceed as planned.
“I am not at all optimistic about the way in which the state services operate on the issue of erosion (…),” he said.
He called on the authorities to “act immediately and provide solutions”, noting the municipality could not await further bureaucratic delays.
“We expect measures yesterday and not today,” he added.
Andronikou warned that the problem of erosion stretched beyond his municipality and called on the government to proceed with relevant interventions to ensure the protection of the coastline for locals and tourists.
“The issue concerns the protection and safety of the thousands of visitors, foreigners and locals who visit Cyprus and our beaches every year,” he said.
Police-chief Themistos Arnaoutis will present the findings of their investigation into the ‘Sandy’ case and related complaints made by journalist Makarios Drousiotis on Wednesday at noon.
The briefing will take place at police headquarters and will conclude with a question-and-answer session.
Authorities said the update will address all allegations raised during the investigation conducted by the special investigative unit.
According to police sources, the case file has been developed alongside assessments from Europol and the Federal Bureau of Investigation (FBI), which examined material and other evidential submissions.
Officials said both agencies had already provided input during the investigative process.
It is understood that Europol conveyed its position on evidence forwarded by Cypriot investigators in relation to dozens of SMS messages and electronic data contained on storage devices.
The FBI report, compiled following visits by experts to Cyprus to review investigative methods and the profile of the individual referred to as ‘Sandy’, is expectedly to be broadly supportive of the police handling of the case.
Police investigators have maintained that their findings do not substantiate the allegations made by Drousiotis.
They said that claims examined during the inquiry were assessed through witness testimony, digital forensic review and open-source verification, with inconsistencies identified across several key points.
A police statement indicated that “the investigation did not confirm the allegations as presented” and that the conclusions would be made public in full at the briefing.
The case has drawn attention due to wide ranging allegations of corruption and abuse, involving senior legal and political figures, all of whom have denied wrongdoing.
The original complaints centred on claims made by Drousiotis concerning a woman referred to as ‘Sandy’ and alleged events spanning several years, which have been repeatedly disputed by those named.
Earlier procedural developments had ruled out the appointment of an independent criminal investigator, with authorities stating that such an option was “out of the question” and that the matter would remain under the jurisdiction of the police and legal service.
Following completion of the investigation phase, the file is expected to be transmitted to the legal service for review, where prosecutors will assess whether further action is warranted or whether the case will be closed.
Cyprus will receive two additional light firefighting aircraft through the EU civil protection mechanism for the summer, it was announced on Tuesday.
The deployment is included in a total of 777 firefighters from 14 European countries positioned in Cyprus, Greece, Italy, France, Spain and Portugal.
The commission said this is the largest positioning of firefighting personnel since the programme began in 2022.
In addition to the aircraft assigned to Cyprus, 22 firefighting aircraft and five helicopters from the EU fleet will remain on standby during the fire season to assist member states if national capacities are exceeded.
The commission said the assets form part of the ‘rescEU’ framework, which allows countries to request assistance when required.
Coordination of operations will be carried out through the EU Emergency Response Coordination Centre, which monitors fire risk levels continuously throughout the season.
Risk assessment and mapping will also be supported by the European Forest Fire Information System and the Copernicus satellite programme, which provides near real-time data during natural disasters.
The commission also confirmed plans for a regional EU firefighting base in Cyprus, expected to become operational later this year.
The facility is designed to accommodate up to six firefighting aircraft and will function as a training and coordination site for civil protection personnel from EU member states and partner countries in the Southern Mediterranean.
Nicosia criminal court on Tuesday dismissed a motion to declare a mistrial in the case of Giorgos Christodoulou, alias ‘Zavrantonas’, who is facing charges of importing 15kg of cocaine.
The court also said it would rule by the next hearing, scheduled for June 16, on whether the defendant’s lawyers should have access to three documents pertaining to the main witness for the prosecution.
The prosecution witness is Yiannis Andreou, alias ‘Maronas’.
He had initially been sentenced to 16 years in prison for the same case. Having served four, Andreou was subsequently granted a presidential pardon.
In court on Tuesday, the defence said that Andreou’s release from jail had been conditional on his leaving Cyprus.
The defence wants to see the documents pertaining to Andreou, as they suspect he may have been offered inducements to turn state witness.
Christodoulou was originally sentenced in December 2022 to 22 years in prison, but that conviction was recently overturned by the appeals court, which ordered the case to be retried from the beginning.
Christos Poutziouris, the lead attorney for defendant Christodoulou, also argued that the case should be declared a mistrial and re-filed.
But the criminal court, now re-trying the case, rejected the motion, citing the appeals court’s explicit decision for a re-trial rather than re-filing the case from scratch.
The court said it has jurisdiction to try the case.
Meanwhile Christodoulou remains in custody at the central prisons.
During the previous hearing, his lawyers motioned for his release, noting that it has been four years since his sentencing and conviction were set aside.
The court rejected the motion, finding that there remained a serious risk both of absconding and further criminal activity.
Cyprus’ candidate for the presidency of the 81st United Nations General Assembly, ambassador Andreas Kakouris, received 91 votes in the election held at UN headquarters in New York on Tuesday, losing to Bangladesh’s candidate Khalilur Rahman, who secured 99 votes.
The required majority was 96 votes, with 190 member states present and voting.
The result places Cyprus just five votes short of the threshold needed for election.
The outcome confirms Rahman’s appointment as president of the upcoming General Assembly session, which will open in September.
Following the vote, the Foreign Ministry congratulated Rahman and thanked member states that supported Kakouris’ bid.
In a statement posted on X, the ministry said it expressed “special thanks” to Kakouris for what it described as “his clear vision for a presidency dedicated to practical multilateralism, which restores trust, enhances effectiveness and ensures that the UN works for the benefit of all”.
It added that Cyprus would “continue to work actively, consistently and responsibly” within the UN.
During his candidacy campaign, Kakouris had outlined a platform centred on institutional reform, consensus building and restoring confidence in the UN system.
The presidency of the General Assembly, though largely procedural carries significant diplomatic weight, particularly during periods of geopolitical tension.
Cypriot delegation head and vice-president of the parliamentary assembly of the Council of Europe, Nicos Tornaritis, called for Hagia Sophia to be returned to museum status during a meeting of the assembly’s cultural committee held in Istanbul on Tuesday.
Tornaritis said the restoration of museum status was necessary to safeguard the monument’s “universal, historical and cultural value”.
He said Hagia Sophia, listed as a UNESCO World Heritage site, should be protected in a way that respects its “special character, aesthetics and symbolic importance for humanity”.
He also said it should be maintained as a space that supports intercultural dialogue, describing it as a site for “mutual respect and peaceful coexistence of peoples and cultures”.
The discussion took place during a committee session held in Istanbul, where members examined cultural heritage issues and related policy questions.
The agenda included the status of Hagia Sophia, which has remained a subject of international debate since its conversion from a museum into a mosque in 2020.
The issue was first introduced to the committee agenda in 2020 by Tornaritis and fellow Cypriot MP Kostis Efstathiou, following the decision by Turkish authorities to change the monument’s status.
Hagia Sophia was constructed in the sixth century by the Byzantine Emperor Justinian, and served as the main cathedral of Constantinople for nearly a thousand years.
Following the Ottoman conquest of the city in 1453, it was converted into a mosque, whereupon four minarets were gradually constructed around the original structure and the interior’s ornate gold mosaics plastered over.
In 1935, under Mustafa Kemal’s secular reforms, it was designated as a museum and remained as such until 2020.
In July 2020, Turkey annulled the 1934 decision that had established museum status, and by president Recep Tayyip Edrogan’s decree, restored its function as a mosque.
The decision was followed by the resumption of regular prayers at the site.
The change prompted condemnation from UNESCO, and several governments, which raised concerns over procedural aspects and consultation with international bodies.
Turkish officials maintained that the decision was an internal matter of sovereignty and stated that the site’s World Heritage status remained unaffected.
The Council of Europe committee declined to issue a resolution on the matter during the session in Istanbul.
Hagia Sophia remains open as a mosque, with regulated access for visitors outside prayer times.
Conservation and access arrangements continue to be monitored by international heritage organisations, including UNESCO, which has previously called for dialogue with Turkish authorities regarding management of the site.
Police union Isotita on Tuesday called for a meeting involving President Nikos Christodoulides, Justice Minister Costas Fitiris and police-chief Themistos Arnaoutis amid an ongoing dispute over police overtime.
Spokesman Nikos Loizides called for direct dialogue between all parties involved, saying the union was seeking discussions on working conditions affecting police officers.
He added that if no initiative is taken by the government, the union intends to raise the matter in parliament once the new House begins its work.
“With the opening of parliament, if the president does not invite us to find the solution himself, we will invite the six parliamentary parties to the first meeting of the legal affairs committee,” he said.
Loizides maintained that solutions exist but alleged that discussions had not progressed.
“We have the solution and there is balance everywhere, but Arnaoutis himself does not want to sit at the table,” he said.
The union highlighted a letter dated May 28 sent by Fitiris to the European police confederation (Europol) concerning issues raised about police management and working arrangements.
Loizides criticised the contents of the letter, claiming it contained “distortions, inaccuracies and, at the very least, untrue information”.
According to Loizides, the correspondence responded to concerns raised by Europol regarding the reduction of police officers’ rest days.
He argued that the measures affected operational police personnel and were not limited to office staff.
He also said the union intends to rely on the contents of the letter in legal proceedings should an appeal currently under consideration proceed before the administrative court.
Addressing the legal framework governing police operations, Loizides argued that while Arnaoutis holds direct authority over the force, responsibility ultimately falls within the remit of justice ministry and the presidential palace.
He questioned references in the ministry’s response concerning working hours, overtime accumulation and the granting of additional rest periods, disputing the interpretation presented by police leadership.
Loizides further challenged references to observations by the finance ministry regarding police staffing and overtime management, suggesting the issue had become focused primarily on financial considerations.
Asked whether the union was considering protest action, Loizides said any decision would be taken collectively through the organisation’s internal bodies.
He also called on Pasydy’s police branch to consider participating in a joint strike.
The dispute centres on changes to police working arrangements introduced by police leadership, which Isotita argues have significantly reduced the number of rest days available to frontline officers.
The union maintains that officers who previously received one day off for every 20 working days would, under the revised system, receive one day off for every 76 working days, amounting to the loss of up to 15 rest days per year.
The justice ministry has rejected claims that officers’ rights are being undermined, insisting the changes are intended to address working time management and overtime accumulation.
Isotita has consistently argued that the reform should have been referred to cabinet before implementation.
Union representatives have further claimed that Arnaoutis exceeded his authority by proceeding without cabinet approval and have sought legal advice on the matter.
By June 15, the anti-corruption authority will issue an announcement regarding its investigation into allegations appearing in the book Mafia State, the head of the authority said on Tuesday.
Tuesday’s statement narrows down the date, as earlier the authority had said it would make its findings public within the month of June.
Transparency Commissioner Harris Poyadjis, who also heads up the anti-corruption authority, declined to give any more details, citing confidentiality.
He said only that the authority has suspended work on all other cases it is examining “until we are finished with this one” – meaning the probe into Mafia State.
Previously, the anti-corruption authority had clarified it would be releasing only a statement outlining its main findings. It will not make public the entire report.
If any criminal liability is ascertained, it will forward the material to the attorney-general’s office.
First published in late 2022, Mafia State is authored by investigative journalist Makarios Drousiotis. The book has done well, although precise numbers on the copies sold are not available.
It portrays Cyprus as a systemically corrupt state and levels allegations at former president Nicos Anastasiades and other senior officials.
The book details claims of how a ‘gang’ abolished the rule of law. It accuses Anastasiades of facilitating the affairs of Russian billionaire Dmitry Rybolovlev – such as private flights and involvement in a divorce case – in exchange for favours.
It further alleges that state-sponsored wiretapping and electronic surveillance were used against Drousiotis himself after he investigated these corruption networks.
Drousiotis also purports to have documented a clandestine network of politicians, lawyers and business figures involved in rigged trials.
Anastasiades has categorically rejected all allegations, and has sued Drousiotis for defamation.
The investigators working for the anti-corruption authority handed over their final report at the end of April.
The dossier is said to be approximately 3,000 pages long, including the annexes.
During the probe, the investigators held some 200 sessions, interviewing 150 people, while 793 evidentiary items were submitted.
A 45-year-old Syrian was remanded for three days on Tuesday for reportedly kidnapping his two teenage children for six months.
The was arrested upon his arrival at Larnaca airport on Monday, where he had arrived with his 16-year-old and 17-year-old children.
According to Philenews, their mother had given consent for the 45-year-old to travel with their children from December 21 to 29, but was informed that the father had taken them to Syria instead, following which she filed a complaint with the Limassol police in January.
The man reportedly admitted he had gone to Saudia Arabia with his children on December 27 but instead of returning two days later as planned, decided to travel to Syria to show them his home country.
The 45-year-old reportedly claimed that the mother of his children had not been made aware of the change in plans, citing fear that she would disagree.
He then reportedly claimed that the return to the island had been further delayed, as he injured his foot in Syria, preventing him from travelling for approximately two months.
During their stay in Syria, the children reached out to their mother, expressing fear over their father’s behaviour and requesting that she proceed with the necessary steps to bring them back to Cyprus.
The police later contacted the father online, who reportedly claimed that he would return to Cyprus but leave his children in Syria.
Investigations into the case are ongoing.
Drivers involved in minor car accidents will be required to move their vehicles from the scene, with penalties reaching €3,000 and possible imprisonment for those who fail to comply, the police reiterated on Tuesday.
The amended legislation, published in the official gazette on Tuesday, aims to ease congestion caused by collisions that do not result in serious injuries.
Under the revised framework, drivers must move their vehicle off the road to the nearest suitable location to avoid obstructing traffic, provided there are no obvious physical injuries, police intervention is not required and the vehicles can be moved without towing or causing additional damage.
The legislation also requires drivers to complete a series of actions before relocating their vehicles.
These include immediately informing their insurance company, exchanging personal and insurance details with the other parties involved and taking photographs of the crash.
The photographs must show the final position of the vehicles following the collision, vehicle registration numbers, any visible damage and the surrounding area.
Drivers must also exchange the photographs and forward them to a person designated by their insurer.
Police said compliance with these requirements is mandatory and warned that failure to carry out the prescribed actions constitutes an offence.
Those convicted of failing to meet their obligations under the legislation face a fine of up to €1,000.
The law also targets individuals who attempt to influence a driver’s actions following a collision.
Any person who “incites or coerces” a driver not to move a vehicle, or not to carry out the actions required before moving it, commits an offence punishable by a fine of up to €1,000.
Once a vehicle has been removed from the scene, responsibility remains with the driver.
The legislation prohibits vehicles from being parked, abandoned or left in a manner that is dangerous or obstructive to traffic.
Where those provisions are breached, authorities are empowered to remove the vehicle and recover transportation costs.
Conviction can result in a prison sentence of up to one year, a fine of up to €3,000, or both.
The amendments were introduced to resolve cases involving minor collisions where vehicles are left stationary while drivers await assistance or complete administrative procedures.
Bus stops in Paphos are being upgraded, beginning in the tourist areas, acting mayor Angelos Onisiforou said on Tuesday.
The municipality’s bus stops were criticised in September by the Paphos Regional Board of Tourism for having “an unacceptable and third-world image.” The tourism board said that some bus stops don’t have a cover or a bench, and those that do “have made us the laughing stock of the planet.”
Upgrades will continue gradually in other areas until “all bus stops can be restored and modernised,” Onisiforou said.
In September, the tourism board called on authorities to address the issues before the tourism season in February.
The planned natural gas pipeline linking Turkey and northern Cyprus will be operational in 2028, the north’s ‘public works minister’ Erhan Arikli told the Turkish Cypriot legislature on Tuesday.
“This project will be implemented through around 97 kilometres worth of pipelines, starting in Alanya and reaching either the Teknecik power station or another area in the TRNC,” he said. Alanya is a city on Turkey’s southern coast, while the Teknecik power station is located east of Kyrenia.
Alanya itself is currently not connected to a natural gas pipeline, but work is underway to connect it to Mersin, which is supplied by natural gas flowing from Azerbaijan via Georgia, and from Turkmenistan via Iran.
Arikli on Tuesday said that engineering studies will be completed by the end of this year, and that the project’s feasibility study “has already reached a certain point”.
“It will be operational in 2028. The project will cost approximately $700 million,” he said, around €601m.
He added that once the cable is complete, “the possibility of transporting gas which may be found in the eastern Mediterranean to Europe via Turkey through a second pipeline will emerge”.
“The natural gas project can be a bridge of peace,” he said.
Additionally, he spoke about plans to connect Turkey and the north with an electricity cable, saying that “no official response” has been received from the European network of transmission system operators for electricity (Entso-E) on the matter.
Entso-E itself had rejected suggestions that it may include plans for the cable into its continent-wide ten-year development plan, saying that the Great Sea Interconnector, which, if completed, will connect the electricity grids of Cyprus, Greece and Israel, “is the only interconnector project connecting the Republic of Cyprus” in its plans.
Arikli also said that the north is “not making sufficient use of its solar energy potential”, and that “the main reason for this is the deficiencies in the energy transmission infrastructure”.
This, he said, would require between $30m (€26m) and $50m (€43m) to rectify.
He then went on to say that the reasoning behind efforts to build a cable and a natural gas pipeline is that “the fossil fuels currently used in electricity production are both costly and environmentally problematic”.
He said that the “special fuel” which has a relatively low sulphur content the north’s electricity authority Kib-Tek currently imports to power Teknecik is expensive, and pointed out that the European Union has set a horizon of 2030 for the phasing out of that specific type of fuel, saying that “fossil fuel has no future”.
This assertion did raise eyebrows among some in the opposition, with the CTP’s Salahi Sahiner pointing out that “natural gas is a fossil fuel, not a renewable energy source” after ‘prime minister’ Unal Ustel had himself addressed the legislature about the matter.
“What angers me is that the prime minister learned about the arrival of natural gas from the media,” Sahiner said, in reference to the fact that Turkish Energy Minister Alparslan Bayraktar had in May announced the plans, ostensibly without consulting anyone in Cyprus.
A visually impaired student and her father have slammed the University of Cyprus, alleging discrimination and inadequate support during her studies and practical training.
But the university on Tuesday denied the allegations.
The student is requesting a full reassessment of her practical training grades, arguing that she was evaluated without the necessary accommodations to ensure equal participation.
She is also seeking an independent committee review all practical training courses, a written explanation of her grades, and an investigation into whether the lack of adjustments affected the outcomes.
She has raised concerns about compliance with principles of equality and non-discrimination, and whether similar cases involving other students were handled differently.
In a video on social media, her father said he has also submitted a complaint alleging discrimination, victimisation and unequal treatment on the basis of disability.
He claims that despite providing medical documentation and external recommendations, the university did not fully implement the required accommodations.
He also raised concerns that other students in comparable situations may have been treated differently.
The University of Cyprus strongly rejected the allegations, describing them as unfounded.
It said it systematically provides reasonable accommodations for students with disabilities, in line with its institutional framework.
In the specific case, the university said the following measures were granted: funding for the employment of an escort during the internship, funding for a tutoring support person, an extension to complete internship obligations, extensions for submission of assignments, and modifications to the teaching schedule.
It added that additional tailored support measures were also provided based on the student’s needs but could not be publicly disclosed due to personal data and sensitive information restrictions.
The statement also expressed “deep concern” over what it described as unsubstantiated allegations and the reproduction of misleading information, warning that such claims may damage trust in institutional procedures and the work of academic staff.
It further stressed its commitment to equal access, inclusion and fair evaluation, stating that reasonable accommodations are provided while safeguarding academic integrity and the value of degrees awarded.
Head of Academic Affairs and Student Welfare Services Kleanthis Pissarides said the institution had fulfilled its obligations.
“We have provided all we could, and we respect each student individually. It’s up to the student if she performs well for her exams or internship. We have offered ample adjustments,” he said.
President of the confederation of organisations for people with disabilities (KYSOA) Themida Anthopoulos stressed that reasonable accommodations are not preferential treatment but a legal requirement to remove barriers.
“We are not talking about favours or favourable treatment. You cannot expect a student with a visual impairment to distinguish the yellow from the blue circle without help,” she said.
She added that Cyprus still faces challenges in fully implementing the UN disability rights framework in education.
The dispute remains unresolved.
There will be a Chinook helicopter ready to be airborne at the British bases at all times during the summer firefighting season, British Forces Cyprus announced on Tuesday.
“The Chinook is ideally suited to aerial firefighting, being one of, if not the most, capable heavy-lift helicopters in the world,” Squadron Leader Joel Babbage, of RAF Akrotiri’s 1310 Flight, said.
He said the helicopters can operate in “challenging conditions, including high temperatures and demanding terrain, while carrying significant loads.”
The Chinooks and British firefighting crews held a practice exercise alongside colleagues from the Republic of Cyprus last month, while British firefighters completed training on May 1.
Babbage praised the joint exercises for “strengthening interoperability with Republic of Cyprus assets.”
The availability of the Chinook helicopters comes after a deadly wildfire season last year. A July wildfire in Limassol killed two people and destroyed hundreds of homes and businesses.
This year, several new systems have been implemented, with the goal of improving wildfire response.
A new AI warning system is working to detect smoke sources, and a new Unified Fire Service Operations Coordination Centre aims to improve communication during crises.
“Working alongside Cyprus units enhanced understanding of their capabilities and operating methods, enabling more effective joint planning and execution,” Babbage said.
We have deprecated GPT-4.1 across all GitHub Copilot experiences (including Copilot Chat, inline edits, ask and agent modes, and code completions), June 1, 2026.
| Model | Deprecation date | Suggested alternative |
|---|---|---|
| GPT-4.1 | 2026-06-01 | GPT-5.5 |
Please update your workflows and integrations to use supported model. Copilot Enterprise administrators may need to enable access to the alternative model through their model policies in Copilot settings. As an administrator, you can verify availability by checking your individual Copilot settings and confirming that the policy is enabled for the specific model. Once enabled, you’ll see the model in the Copilot Chat model selector in VS Code and on github.com. No action is required to remove the deprecated model.
GitHub Enterprise customers with questions or concerns are encouraged to reach out to their account manager for further assistance.
To learn more about the models available in Copilot, see our documentation on models and get started with Copilot today.
Join the GitHub Community to share your feedback.
The post GPT-4.1 deprecated appeared first on The GitHub Blog.
The GitHub Copilot app technical preview is now available to all existing Copilot Pro, Pro+, Business, and Enterprise customers. Download the Copilot app for Windows, macOS, or Linux to get started.
Copilot Free users and customers not yet on Copilot can join the waitlist to be notified when broader access becomes available. Existing Pro+ customers can upgrade to the new Copilot Max plan for greater included usage.
This release is also where the app’s center of gravity shifts. As agents do more per session, the work that falls to you changes into managing their output: reading chat transcripts, hunting for the diff that matters, and repeating yourself to course-correct. The headline addition in this release, canvases, is our answer to that shift. Canvases give agent work a place to take shape, become visible, and get verified. All this happens alongside the chat where you steer it.
The Copilot app is the desktop home for agent-native software development on GitHub. In one app you can:
Canvases are bidirectional work surfaces for humans and agents. The agent updates the canvas as it works, and you can edit, reorder, approve, or redirect work directly on that same surface.
This is the beginning of agent experience (AX) in the Copilot app: interfaces designed not only for people to use, but for people and agents to operate together. The agent session remains where you instruct, discuss, and reason through ambiguity. Canvases are where that intent becomes visible work you can inspect, steer, and verify.
A canvas is a structured, interactive surface over a work object. That work object might be a plan, pull request, browser session, terminal, release checklist, migration board, incident, spreadsheet, dashboard, cloud console, or workflow state. The canvas does not replace the conversation. It gives the conversation somewhere to land.
Three participants share a canvas:
That loop makes agentic work more grounded, more steerable, more inspectable, and more continuous. Progress is no longer buried in a transcript. It is visible as changes to the work object itself.
copilot --cloud, now in the app UI./chronicle: Query data from any of your Copilot agent sessions, including ones you started outside the app. Useful when you need something from a session that isn’t in front of you.Download the Copilot app to start your first agent session.
Read the docs to get started quickly.
Join the discussion within GitHub Community.
The post Expanded technical preview availability for the GitHub Copilot app appeared first on The GitHub Blog.
The GitHub Copilot SDK is now generally available. You can embed GitHub Copilot’s agentic engine into your own applications, services, and developer tools with a stable API and production-ready support.
The Copilot SDK gives you direct, programmatic access to the same agent runtime behind GitHub Copilot—planning, tool invocation, file edits, streaming, and multi-turn sessions, so you don’t have to build your own orchestration layer.
Since entering public preview, the SDK has been used to build everything from CI/CD assistants and internal developer tools to customer-facing AI features.
npm install @github/copilot-sdkpip install github-copilot-sdkgo get github.com/github/copilot-sdk/godotnet add package GitHub.Copilot.SDKcargo add github-copilot-sdk — new at General Availabilitygrep and edit_file.The GitHub Copilot SDK is available to all existing GitHub Copilot subscribers, including Copilot Free for personal use, and to non-Copilot users via BYOK.
The post Copilot SDK is now generally available appeared first on The GitHub Blog.
GitHub Copilot CLI is getting a major refresh at Microsoft Build 2026. Rubber duck, prompt scheduling, and voice input are generally available today, and a new experimental terminal interface—including tabs for working with issues, pull requests, and gists—is available to try via /experimental.
We’re previewing a redesigned terminal interface for Copilot CLI. You get a cleaner layout, theme-aware semantic colors, and responsive components that adapt to narrow terminals without truncating the things you need to read.
The biggest visible change is the introduction of tabs. When you use the CLI in a GitHub repository, you can press Tab to switch between the default Session view, tabs for the repository’s Issues and Pull requests, and a tab for your personal Gists. This lets you view issues, pull requests, and gists without leaving Copilot CLI.
The redesign also makes Copilot CLI more accessible:
default, github, dim, high-contrast, and colorblind) to match your terminal and your eyes.The new terminal experience is available in /experimental mode. Run /experimental on to opt in. The new experience is still evolving, and we’d love your feedback as we move toward general availability.
Rubber duck is a built-in CLI agent that acts as a constructive critic. While working on a task, the main CLI agent for a session can pass its current plan, design, implementation, or tests over to the rubber duck agent for review. The rubber duck agent looks for blind spots, design flaws, and substantive issues, and reports back with concrete, actionable feedback. Copilot then takes that critique into account before continuing.
For some tasks, two heads are better than one, and the CLI decides when getting a second opinion may be beneficial.
You can also invoke rubber duck with /rubber-duck. Read more about rubber duck.
The new /every and /after slash commands let you schedule a prompt or skill within the current CLI session.
Use /every to schedule a prompt to run repeatedly at the specified interval:
/every 30m run the frontend tests/every 1h how many tokens have I used during the past hourUse /after to schedule a prompt to run just once, after the specified interval:
/after 2h /example-skills:docx create a new file summarizing recent changes to this repoRun /every or /after with no arguments to open the schedule manager, where you can see active schedules and delete any you no longer want to run.
Copilot CLI now includes hands-free dictation. Hold the space bar on your keyboard and talk to input a prompt. Alternatively, press Ctrl+X followed by V to start recording, speak your prompt, then press any key to stop recording and insert the transcription.
Voice input runs locally, so all audio you record stays on your machine. The first time you enable voice input, the CLI guides you through downloading the runtime and picking a speech-to-text model.
Update GitHub Copilot CLI by running copilot update in your terminal. We’d love to hear what you think—share feedback with the /feedback command in a CLI session or open an issue in our public repository.
The post Copilot CLI: Improved UI, rubber duck, prompt scheduling, and voice input appeared first on The GitHub Blog.
GitHub Copilot can now run inside secure, isolated sandboxes, both locally on your machine and in the cloud. Sandboxed Copilot experiences provide isolated environments for Copilot’s tool execution locally as well as fully isolated cloud sandboxes hosted by GitHub.
This gives Copilot a safe place to interact with your code, tools, filesystem, and network, all within the policies you define, so developers and enterprises can adopt agentic workflows without giving up isolation or control.
Copilot is evolving from an in-editor assistant into an agentic coding partner that runs tools, executes commands, and modifies files on a developer’s behalf. As Copilot takes more actions, developers and enterprises need stronger guarantees around security, isolation, and control.
Agentic development is interactive, stateful, and parallel, and it needs an execution layer built for that reality. Cloud and local sandboxes for GitHub Copilot provide that layer natively, with consistent identity, governance, and policy controls built in. As AI agents become a larger part of the software development lifecycle, secure execution environments become foundational infrastructure, and sandboxes provide that layer for Copilot.
Inside any Copilot session, enable sandboxing with /sandbox enable. Shell command execution initiated by Copilot for that session runs with restricted access to your filesystem, network, and system capabilities, so you can experiment with agentic workflows while staying in control of what Copilot can touch on your machine. Local sandboxing is built on Microsoft MXC technology for a consistent isolation experience across macOS, Linux, and Windows. Enterprise teams can also centrally configure and enforce local sandbox policies through Microsoft Intune and other MDM platforms. Local sandboxes are included in the standard GitHub Copilot seat.
This release focuses on isolating shell command execution initiated by Copilot, laying the foundation for broader CLI-level isolation as agentic workflows mature.
Launch a fully isolated, ephemeral Linux sandbox hosted by GitHub directly from Copilot with copilot --cloud. Each session inherits your existing Copilot cloud agent policies, so the security controls your org already trusts apply on day one with no additional setup.
To get started, read the docs for sandboxes for GitHub Copilot in local environments and cloud environments, see pricing for sandboxes for GitHub Copilot in cloud environments, or join the discussion in the GitHub Community. Learn more at our Microsoft Build demo session.
The post Cloud and local sandboxes for GitHub Copilot now in public preview appeared first on The GitHub Blog.
Copilot code review adapts to your team’s tools and standards and scales its depth to the complexity of each change. Today we’re shipping two public previews:
A lot of what reviewers need to know lives in other tools, not in the diff itself. Agent skills and MCP bring that context into Copilot’s reviews, ensuring that reviews don’t stall on questions already answered elsewhere. This means senior engineers stop being the bottleneck for consistency across repositories.
Review depth should scale with the complexity of the change. The new Medium tier routes pull requests to a higher-reasoning model purpose-built for deeper analysis of complex logic, security-sensitive code, and cross-service changes. Low remains a fast, cost-efficient default for straightforward work like docs and small repositories. This enables you to invest compute where it matters most and conserve it everywhere else.
These features are available in public preview for existing Copilot Pro, Pro+, Business, and Enterprise users. Copilot code review can also be enabled for non-Copilot users via Direct Org Billing.
Note: Any existing MCP configurations for Copilot cloud agent will now apply to Copilot code review automatically.
Read the docs to find examples of common MCP configurations you can get started with.
.github/skills directory..github/skills, create a code-review or similarly named directory to ensure that Copilot code review will read and utilize the skill.SKILL.md file containing the relevant context and instructions you want Copilot code review to utilize.Note: Existing agent skills within the
.github/skillsdirectory will automatically be available to use by Copilot code review if relevant to the review.
For more information, read our docs on agent skills.
For more details, read our docs on medium tier reviews.
Join the discussion within GitHub Community.
The post Shape Copilot code review around your team appeared first on The GitHub Blog.
GitHub Copilot code review for Azure Repos is now available in technical preview, bringing on demand pull request reviews directly into your Azure DevOps workflow.
Once enabled at both the organization and repository level, users can request a Copilot code review directly from a pull request in Azure Repos. Copilot adds review comments inline with the code changes, suggests improvements when appropriate, and helps identify potential issues earlier in the development process—all without leaving Azure DevOps.
Copilot code review for Azure Repos is available to all Azure DevOps customers who sign up for the technical preview. No GitHub Copilot license is required to use the feature.
Learn more about Copilot code reviews.
The post GitHub Copilot code review for Azure Repos is now in technical preview appeared first on The GitHub Blog.
Agent apps are AI agents from GitHub partners, installable from the GitHub Marketplace, and integrated directly into GitHub.
You install an agent app just like any other GitHub App from the Marketplace. Once it’s installed and enabled by an administrator, the agent becomes available inside your GitHub workflows, with three entry points:
The first wave of agent apps is available today from:
Over the coming months, we’ll open up access to allow anyone to build agent apps, whether you’re a developer tools provider or just building an internal tool for your team.
If you’re a partner interested in building your own agent app, you can join the waitlist to get access.
To learn more, see “About agent apps” in the GitHub Docs.
Join the discussion within GitHub Community.
The post Extend GitHub with agent apps appeared first on The GitHub Blog.
With Copilot CLI now available in GitHub Copilot for JetBrains IDEs, this update centers on new capabilities for Copilot CLI sessions, while also delivering a broader set of agentic improvements. For Copilot CLI sessions, that includes agent picker support, new slash commands, and the agent debug panel in public preview, along with the beginning of a phased transition to Copilot CLI agent as the default experience.
In parallel, this release also integrates Coding Agent into the unified sessions view, adds configurable thinking effort for supported models, introduces the agent customizations editor, adds Google and Apple sign-in options, and includes additional user experience and reliability improvements.
Copilot CLI agent now includes an agent picker that lets you flexibly choose between different operating modes to suit your workflow:
/remoteThe /remote command lets you remotely control a Copilot CLI session from github.com or the GitHub Mobile app. With remote control, you can monitor and steer your ongoing Copilot CLI sessions from anywhere, giving you more flexibility to keep work moving without being tied to your machine.
Enable it from Settings > Tools > GitHub Copilot > Chat > Enable Copilot CLI Remote.
/compactThe /compact command lets you manually compress the Copilot CLI session context at any time, keeping long-running sessions more manageable.
/chronicleThe /chronicle command lets you review and analyze session history and provide personalized tips and improvements, helping you use Copilot more effectively.
You can enter the following commands in an interactive Copilot CLI session:
/chronicle standup: Generates a short report summarizing what you worked on in your recent CLI sessions. /chronicle tips: Provides personalized tips for using Copilot CLI more effectively. /chronicle improve: Analyzes your session history to identify patterns where Copilot may have misunderstood your intent or where there was a lot of back-and-forth. It uses this analysis to generate custom instructions to help Copilot better understand you in the future. /chronicle search: Search sessions for ones that match your query. The Agent Debug Log panel shows a chronological event log of agent interactions during a Copilot CLI session, making it especially useful when debugging custom agents and orchestrated sub-agent workflows.
To use it, first select Copilot CLI from the agent picker in the Copilot Chat panel, then click the settings icon in the top-right and select Agent Debug Panel. For full support across current and historical sessions, also enable Settings > Tools > GitHub Copilot > Chat > Enable Agent debug File Logging.
If you are a Copilot Business or Copilot Enterprise subscriber, an administrator will have to enable the Editor preview features policy before you can use this feature.
Cloud agent sessions are now surfaced directly in the unified sessions view in the chat panel. This makes it easier to manage and monitor all your agent sessions from one place, whether they’re local, CLI, or cloud. You can filter by agent type or status to find the session you’re looking for.
To use cloud agent, enable it from Settings > Tools > GitHub Copilot > Chat > Enable Coding Agent.
If you are a Copilot Business or Copilot Enterprise subscriber, an administrator will have to enable the Editor preview features policy before you can use this feature.
For reasoning models that support configurable thinking effort, you can now control how much reasoning the model applies to each request, directly from the model picker. Use a higher effort level for complex tasks like architectural decisions or multi-step debugging, and a lower level for straightforward code generation or simple questions.
To configure thinking effort, open the model picker in the chat input field, select a reasoning model, and then select an effort level from the “Thinking Effort” submenu. Nonreasoning models, such as GPT-4o, will not show the thinking effort submenu.
The Agent Customizations editor provides a centralized UI for creating and managing all your agent customizations in one place. You can configure workspace customizations for the entire team, or create personal ones that follow you across projects.
This includes viewing and editing existing custom agents, reusable skills, instructions, and prompts. To open the Agent Customizations editor, open the Copilot Chat panel and click the settings in the top-right, then select Customizations.
You can now sign in to GitHub Copilot in JetBrains IDEs using Continue with Google and Continue with Apple in addition to existing sign-in options. This gives you more flexibility to authenticate with the account they already use, while keeping existing GitHub and enterprise sign-in flows available.
We’ve also made several refinements to improve day-to-day workflows, stability, and responsiveness across JetBrains IDEs:
The following capabilities are now either generally available or available without the Editor Preview feature flag:
Editor Preview feature flag, and availability for Copilot Business and Enterprise is controlled by GitHub policy We’re rolling out a phased transition to make Copilot CLI agent (currently in public preview) the default. It offers a more powerful and consistent agentic experience, with support for multiple isolation modes, live session progress, and tool call visibility.
To select Copilot CLI agent, open the agent picker in chat and choose Copilot CLI. Copilot Business and Enterprise subscribers will need their administrator to enable the editor preview features policy first.
We encourage you to try out the latest version of the GitHub Copilot plugin and share your feedback. Your input is invaluable in helping us refine and improve the product.
Your feedback drives improvements. We’d love to hear about your experience in the following channels:
The post Introducing Copilot CLI and agentic capabilities enhancements in JetBrains IDEs appeared first on The GitHub Blog.
Two Gemini models are now available across additional GitHub Copilot surfaces. Gemini 3.1 Pro (Preview) and Gemini 3.5 Flash can now be used in:
Gemini 3.1 Pro (Preview) is available for Copilot Student, Copilot Pro, Copilot Pro+, Copilot Business, and Copilot Enterprise subscribers.
Gemini 3.5 Flash is available for Copilot Pro, Copilot Pro+, Copilot Business, and Copilot Enterprise subscribers.
Copilot Business and Enterprise administrators must opt in by enabling the relevant Gemini model policy in Copilot settings. Once enabled, users in that organization will see the models available across Copilot surfaces.
To learn more about the models available in Copilot, see our documentation on Gemini models in Copilot and choosing the right AI model for your task.
The post Gemini models in Copilot CLI, cloud agent, and the Copilot app appeared first on The GitHub Blog.
The original idea was to run a shop where you craft both potions and spells for customers. As development has gone on, the alchemy side has grown a lot bigger than I originally planned. Between ingredient refinement, brewing, aging, potency systems, customer orders, and faction mechanics, the potion system has kind of taken over the project.
The original spell system was actually one of the features I was most excited about. The plan was to create a spellcrafting system that worked almost like a pseudo programming language. Ingredients and potion effects would act as nouns and verbs, while symbols would determine how the spell behaved.
Players would create custom spells to fulfill customer orders. One NPC might want a spell that automatically fills their bath with water every morning. Another might want a curse placed on a rival. The challenge would be figuring out how to build the spell they were asking for.
The problem is that the potion system alone has already become a pretty large undertaking. I'm building it to be data-driven so new ingredients, effects, recipes, and interactions can be added without rewriting large sections of code. As a solo developer who's still learning as I go, I'm starting to think the spell system might be pushing the scope beyond what's realistic.
I'm currently debating whether to keep the spell system or cut it entirely and focus on making the alchemy side as deep as possible.
What would you rather play: a game completely focused on alchemy and potion-making, or one that includes both potions and spellcrafting?
I'm making an ori fan game and was able to get a sprite sheet from the game and i would love to use it as a placeholder. thing is, the sprite sheet is HUGE and all the sprites seem to be very randomly placed, i tried combing through it just for one animation to see if it was doable and it didn't even seem like all of the sprites were there. i picked out one by one the sprites that seemed like they went together in order, combing through the whole thing, when i thought i got them all the animation wasn't anything remotely similar to the original. not to mention some of them seem to be rotated randomly, the whole thing is just chaos!!!
any recommendations on how to sort through the sprites? i found a sprite cutter, which does help by giving me every single one individually, but they're still very mixed up n such
is there anything I could do to sort the sprites?
Does anyone have any good resource libraries for things like random posters for set dressing? I can pretty easily find movie posters and what not, I am talking about like maintenance posters, signs, anything else to fill empty wall space in public areas. Something like a miscellaneous library of stuff like this.
Thank you in advance!
I've started working on my next project and its going to be a simulation game style... but the problem is I've never done simulation before. Think more like 'Sims' and less like 'SimCity'
I've found a few resources but are there any really good technical talks / documents that anyone knows of that I can read through regarding how other people would structure a simulation? For context, this is mainly going to be NPCs being simulated with goals and behaviors
I released my game with 14k wishlists. So far, I’ve managed to make 187 sales, though 10–15 of those are probably from people I know. I’m trying to console myself with arguments like “Monday isn’t a good day for game sales,” “not much time has passed yet,” and “we’ll sell better during the summer sale.” But deep down, I’m really upset that we sold so few copies on the first day. Two of us have been developing this game for three years, and it’s our first game. It’s a genre that doesn’t sell well, but it does attract attention thanks to its art style. We didn’t have huge expectations for the game. Our biggest hope was to make enough money to continue with a second game. I don’t know what to do. Is there anyone here who’s been through a similar situation but managed to turn things around?
P.S.: I had no advertising budget; a few small accounts I followed shared the game. I also made it onto 5 or 6 lists of games released in June. Other than that, the only meaningful marketing we did was participating in festivals.
Long time software dev but brand new to game dev. On multiple occasions, I've read online someone saying that working in 3D is easier and more manageable than working in 2D. I've assumed the complete opposite but am interested in hearing from people with this perspective.
I just opened public playtest signups for my game on Steam, and haven't advertised it anywhere or told a single soul about it yet - there's already 100 people waiting for access, I'm wondering if it's bots or sus people?
Has anyone else run into this with Steam playtests? Not sure if I need to proceed with caution or if it's just actual people somehow finding my game and actually wanting to playtest it.
I’m thinking about a game concept where a small robot moves through an IRL environment with a camera and captures images at very dense intervals, while also recording precise position (X, Y, Z) and orientation data. Then I would take all of that collected data and use it inside a game engine so that the game world isn’t built from traditional 3D models. Instead, the player would move in first-person, and the engine would match their current in-game position and view angle to the closest real-world camera data point, then render the corresponding real photographs to create the environment.
I’m wondering if something like this is actually possible or has been done before?
Hi there! I'm solo-building a persistent 4X RTS. And because I have absolutely no idea what I'm doing, I'll probably keep showing up here every once in a while asking painfully obvious design questions. Please forgive me 8-)
Right now I'm struggling with combat.
The game is tile-based, but there are no units. Combat is basically:
The issue is that players now have around 1000 settled tiles each, so wars become an insane amount of clicking. I originally thought players would enjoy that level of tactical detail, but in practice it becomes repetitive very quickly.
To reduce clicks, I added an "attack all adjacent tiles" button, which helped somewhat.
There are also combat buildings:
The problem is that conquest becomes extremely tedious because I constantly need to rebuild outposts behind every newly captured tile in order to maintain offensive bonus.
There are two important constraints:
If one player can wipe another in 30 minutes, the game becomes more about who has the most free time online rather than strategy.
So lately I've been considering a completely different combat system.
What if combat automatically starts whenever your border touches an enemy border?
Instead of manually attacking tiles, the war would continue automatically until:
Kind of like releasing a parasite and watching it spread.
The interesting part is that failed attacks would cause counter-pushes. If you lose an attack, the enemy captures the origin tile instead. So wars could become unstable and dangerous very quickly.
This massively reduces clicks, but it also removes a lot of direct control from the player.
I'm unsure whether that's actually a bad thing though.
Part of me thinks it would be more interesting if wars felt like dangerous systems you unleash rather than something you micromanage tile by tile.
Does this sound interesting, or does it sound like I'm accidentally reinventing a terrible auto-battler? Also this doesn't solve having to rebuild outposts... Maybe outposts automove when they have attacked everything within range?
I have an app with 2000 installs and I'm gaining about 40 players a day however my install to onboarding finish is only about 25%. What techniques are best to improve onboarding and get players coming back everyday?
Here are my onboarding stats:
Step Events Users %
first_open 85 85 100.0%
onboarding_started 79 69 92.9%
onboarding_name_entered 43 42 50.6%
first_game_start 43 42 50.6%
first_roll_tap 39 38 45.9%
first_score_selected 34 33 40.0%
first_game_complete 22 22 25.9%
Built a small tool that takes a packed sprite sheet and automatically detects + extracts each individual sprite as a transparent PNG, all directly in the browser using OpenCV.js.
No server uploads, no install, works offline after first load (~8MB OpenCV cache).
Good for game assets, icon sets, illustrated objects — anything packed into a grid or irregular layout.
Free to use: https://spritesplitter.webvrdev.com/
Still in beta, feedback welcome.
A player asked me to add "Conditional Zones" to my rocket game's level editor.
I added them because they seemed useful for creating more advanced rocket challenges.
A few days later, the same player sent me a level that recreated Pong.
Not a harder level. Not a puzzle. Pong.
It reminded me that players often see tools differently than developers do.
What's the most unexpected thing players have built or done with a mechanic you originally designed for something else?
Level in question:
https://www.reddit.com/r/techno_rocket/s/3yPvfpHzNv
| I released a free isometric forest pack. Full hand pixelled and with up to 115 props. Share it to any game dev that wants to develop a 2D isometric game. I made it by my own and the license is CC0. So you can use it for commercial and non commercial project. Also if you need to modify it, you're allowed to do it. [link] [comments] |
Hey there. Our studio released our first game late last year, and one thing we've run into that slows us down is the roadblock in releasing across multiple platforms/storefronts.
It's not so much the process of developing games for multiple platforms (since we expected that to take a while), it's all the little annoyances trying to manage requirements and compliance checks during that final step of actually shipping the game. Steam, EGS, Google Play, the Apple App Store... they all have different requirements for what they want your game (and assets for the page) to look like, what compliance requirements they have, etc. It feels like it takes forever to make sure that you've got exactly what each store requires.
Sometimes even just shipping through one platform portal can take ages, since there's often compliance issues that come up that are hard to anticipate and can set back release while you figure out how to fix it.
Anyone else who has shipped a game on multiple platforms or storefronts have a similar experience? Is this something that's just annoying to us, or is it an issue that a lot of people find? Would love to hear any issues that other devs have run into with platforms when trying to ship their games.
I am working on a Local 1-4 player Fighter Game that gets more Chaotic the longer the match goes on.
You can play Solo with CPU players, or with friends(up to 4 players Locally). Game Page with Build(WebGL): Playtest Now
--------------------------------------------------------------------------------------------------------
About the game:
This game is a Top Down 2D Shooter Fighting game where you and your friends can fight each other in an ever growing chaotic match. It gets more chaotic with each rule injected/evolved. On top of that, disasters routinely enter the arena to cause chaos and power ups spawn in to disrupt player balance.
I've been working on this game for 4 months now.
--------------------------------------------------------------------------------------------------------
I’m looking for playtest feedback, especially:
• What makes the game chaotic and what doesn't.
• What feels confusing or unclear.
• What new feature(Disaster, Rule, Weapon, Power Up, Item) you'd like to see added.
Ahoy game devs! Not sure if anyone here is looking for SEA coverage but I'm posting this anyway.. 😄
I’m putting my Next Fest list together early this year because I really don't want to scramble at the last minute again..hopefully!
I run a small indie gaming news website focused on Southeast Asia, not the first region most devs think about, but there's a real audience here that honestly doesn't get enough love from the indie space.
Well, when I cover a game I write a full spotlight article, share it across our socials, and if I've got enough energy left I'll put something together for TikTok video too. (I usually just use the game's trailer or whatever's available and attach a voiceover that tells the story of the game.)
I'm a one-man team so I genuinely can't promise I'll get to every single submission, and just to be upfront, we're a small and still growing site so I'm not going to oversell what I can do. But I do take the time to actually look at what people send me and I genuinely care about helping indie games find the right players.
No genre restrictions from my end, so if you have a demo in Next Fest just drop a link below or send me a DM and I'll check it out!
Disclaimer: I know that 99% of indie games don't make a profit, 70% of devs quit after their first Steam game, and that this should just be a hobby until it's not, but I don't want more hobbies.
For some more context: I'm 17, I opened Unreal Engine for the first time 2 years ago, I have around 4 to 5 years until I have to make money from my games, and I've made 2 Steam games so far working solo (the first flopped, and the second has lots of potential and will release in a year or so).
So? How would you try and build a game dev career from my position? So far my process is to
make something/polish
Get feedback from new and recurring testers and repeat.
And how would you go about marketing? Should I get Chris Shouzauski's course? Or should I focus on having a better game to market?
Edit: I'm specifically looking for advice for going indie, not working at a AAA studio or something. That's because the reason I want to be a full-time dev is that this is the only profession (that I could find) that both rewards my creativity and has a massive variety of tasks to choose from, so I can effectively farm the hyper-focus I get from my ADHD. And that's why it's so fun for me and why I really don't know what to specialize in.
I’ve posted 100+ short-form videos about my game over the past few months and here’s what actually happened.
Since around February, I’ve been posting daily across YouTube, Tiktok, and Instagram without missing a single day. Most of the videos are about my game features I’ve added, things I enjoy about my game, ideas I’m experimenting with and what I want it to become. I try to keep them somewhat entertaining too, using memes and clips so it’s not just me talking for 30 seconds straight.
At times, it definitely feels repetitive, like I’m making the same video over and over. But I also remind myself that every post might reach someone new, so I’ve stuck with it.
The results?
Honestly… not amazing.
My main goal has been to build wishlists while the game is still in development, and the numbers are lower than I expected in total I have gained 18 Wishlists for my game.
That said, I wouldn’t call it a waste of time.
Yes, making these videos takes time away from development — my game would probably be further along if I hadn’t done this. But I’ve also improved a lot at editing (my early videos were bad), and I’ve built at least some kind of platform even if it’s small.
So overall, it’s been a trade off.
I’m curious has anyone else here tried consistently posting their game like this? Did it actually translate into wishlists or players?
I've included the links in case anyone wants to see the type of content I've been posting for context or feedback
YouTube – Here
TikTok – Here
Instagram – Here
I am developing a game where you manage a Weather Station in a small city. You have to collect multiple values like temperature, pressure, air quality, etc then use various equipments to predict the weather. Then you must report it to other organisation like school, airports, etc. You earn money, upgrade, decorate you home and live a cozy life.
This is just a initial idea, I really appreciate your ideas and feedback.
Thank you
I'm an indie developer and I'm considering starting devlogs for my game. For those who've done them, were they actually worth the time in terms of community growth, wishlists, feedback, or marketing?
Also, what separates a good devlog from one that nobody watches? Any tips, mistakes to avoid, or things you wish you knew before starting?
After 2 years of endless work I finaly released my solo dev indie scifi horror called THEY LEFT US HERE. One week after launch and it got just 300 sales from the 4500 wishlist , of course it didnt make any revenue for the 2 years of work but I am realy honored to have so many people play it ab writing me a review on steam I never imagined that a day like this would come.
It was also a proof of consept that I can make a video game and release it on Steam ,if you have told me that 2 years ago I would never have believed you.
I wanna tell to all solo game devs something cliche but for me realy true : Dont let anyone make you question your abilities in creating a video game that speaks to you and it makes you proud of being its creator.
Love you all,
SCH GAMING
Sure iced already can sort of do this and so can others, but right to left GUI stuff seems like a major accomplishment to me even though cosmic-text is doing the heavy lifting. The stuff on the left and with plain background is English text and the other stuff are each buttons with Hebrew text on them, in right to left co-existing with English left to right. This project is kind of for higher dimensions so instead of just extruding text I will tetrahedralize between them, I know how. Good luck everyone. I don't think any current GUI gives this much control while also providing good RTL in Rust now. All text is rendered with shaders with dynamic colors. No more help needed here. Plans are to be renderer and windowing agnostic but also obviously those are needed so some integration is needed. X E.
Hi there, thanks for clicking on this post!
I recently completed my first project in Rust after finishing the Rust book (Option, match & Result are the best things I have seen after learning about pointers in C, although I haven't seen much).
Geometric-code is used mostly in manufacturing to encode instructions for CNC machines that move them in a precise and controlled manner.
The program is split across two threads: 1. TUI thread: Parses and interprets the code, updates TUI and sends the changes to the GUI. 2. GUI thread: Renders the changes received from the TUI either in 3D space or 2D XY plane (toggleable at runtime).
Why use the TUI anyways? When I started this project, I did not know anything about TUIs and planed to render the simulation inside the TUI itself (I did not know anything about character cells sizes and the resolution a terminal offers). Needless to say, it looked terrible (I could not even get a circle to render correctly). I needed much more resolution and still wanted to implement my new-found knowledge of TUIs. Hence, TUI and GUI architecture.
I have tried to explain and highlight the workings of the program in the project README.
I would appreciate if you took some time to take a look at the project and offer any feedback, comment, criticism or suggestion.
Github: https://github.com/navrajkalsi/gsim-rs
Thank you!
Aiming to be a batteries-included, integrated (converged?) web server / CMS / application framework, with support for straightforward multi-tenant deployments out-of-the-box.
To start playing around checkout the quick-start.md.
Time to get excited about what's coming this year in gRPC-Rust.
Significant gRPC features: Retries, Binary Logging, Channelz Debugging, Keepalive support, Authz. Full xDS (Envoy) support (long-term). Abseil Status (for C++ compat). Lots of performance tuning.
Also, I hope folks will join us at gRPConf this year, it's going to be fun!
Hello! I wasn't going to post this project anywhere, but I've discovered quite a few fantastic apps through this subreddit, so I thought, why not share? Maybe it will inspire someone, and maybe someone will use it!
My use case is Cangjie5, a shape-based (opposed to phonetic) input system for Chinese characters. However, it can theoretically use any CSV dictionary structured as character(s),code. I built it to be a lean Wayland IME that strikes an opinionated balance between the predictability of a static dictionary and the convenience of a weighted one.
I had once worked on a system combining this with katakana/hiragana, which this project emerged from. I abandoned it, but maybe in the future I'd give it another go.
Bumped SQL dialects considered from just PostgreSQL to 12, statements from ~1k to 300k+, and now I am actually plotting the per-statement time & memory requirement distributions. It could not fit it all in an infographic like last time, so I made it into a dioxus website.
Been using roblox studio for 7 years now, got tired of its limitations but always loved its simplicity and ease of use, so I remade its concepts in rust!
The LUAU side of things was pretty easy using the mlua crate, but the render pipeline not so much...
this is very early stages and this engine has taken a few months to get to this state.
everything inside the engine is luau, the demo scene of moving objects is handled by the server script.
this engine is being built from scratch with wgpu, no bevy or 3d crate.
things not showcased in this video:
server and client testing, like roblox studio, the editor is connected to a headless server and when play testing this server enables multiplayer straight away. no networking code needed.
custom render pipeline for obj files, lighting and shadows
*Excluding the rust programming book and rust for rustaceans
The article presents each inherence problem as a puzzle to solve in Rust without inherence. Here is a list of spoilers followed by what surprised me:
union() to Any Collection of Range Sets Blanket ImplementationsOutputArray<8> a Byte-Oriented Method Constraint-Gated MethodsWhat surprised me:
You can almost (but not quite) inherit from a concrete type via the Deref trait. The example wraps a String in a HtmlBuffer struct. If you implement Deref, you can use most String methods directly on HtmlBuffer. (Aside: You can but probably shouldn't do this.)
I use declarative macros to implement a trait named Integer on the 12 numeric integers (u8...i128), plus ip4, ip6, and char. After writing the article, I started wondering if it could/should be done with just traits instead. Now I think macros is best because: a) using 3rd party num-traits crates doesn't work because the compiler worries that num-traits might add char later b) even defining your own "subtraits" for the numeric integers and the IP integers doesn't work because the compiler worries about future overlapping types in the subtraits. c) I think there is a marker-trait solution, but it is more complicated than just using macros.
I realized that I think too much in terms of hierarchy and inheritance. Rust shows that this is not necessary or desirable.
This was inspired by keepass and a group project I had done for uni which was also called Oxipass, but it was a whole web app. This version has the encryption lib i did for it, but besides that I did everything else from scratch
repo-link: https://github.com/JustCreature/dem-renderer
I developed this project to teach myself how to write code in Rust and wgpu, learn a bit about working with image rendering, and work closely with geospatial data, DEM (Digital Elevation Model).
It renders DEM tile(multiple tiles as well) so you can see how the terrain looks like at a given time of a given day. You can change time and day and observe the shadows and illumination changing in real-time (press Shift so it changes faster). I tried to make shadows, and the whole lighting geographically and phisically correct and it seems to be more or less fine :)
You can download executable (from releases) for your OS (macOS arm, macOS Intel, Linux, Win) and use this small 1m resolution tile to play around with it: https://drive.google.com/file/d/1R0K7BVUT5I5gxh_ZqpB62Ly9IH1vSmC6/view?usp=sharing
Or you can open it and click ”Download Tirol Demo View”, it will download about 45GB of Copernicus 30m, Austria 5m and Tirol 1m tiles and stitch them all together and it will extract and render the necessary piece as you fly around keeping GPU usage under 4GB on MID gpu budget settings.
You can download any tile of any resolution and any size and it should work properly if your laptop has at least 3GB of vRAM (tested with Nvidea GTX 1050 3GB) or if you have a MacBook Pro with 32 GB RAM. If your GPU is smaller it might still work but you have to setup vRAM budget to LOW in settings (if you don’t it will probably downscale and show you the OOM warning).
I tested it with 1m resolution tiles as the highest precision and loading a 10GB of Tirol (Austria) was working great, taking only about 1-2GB vRAM. Also tested with Copernicus 30m resolution, tried out other tiles from Norway, New Zealand and a couple of others.
AI usage (Ethics):
df-derive turns a Rust struct into a Polars DataFrame with a single derive: nested structs, lists, decimals, datetimes, binary columns, and field-level dtype hints stay next to the Rust model instead of living in a separate column-building layer.
Disclosure up front: this crate was built with AI assistance. I wanted to sanity-check whether the resulting API and generated code actually held up against the alternatives, so I put together a head-to-head benchmark.
This is the core model from the benchmark harness. It is deliberately not a toy flat row:
use chrono::{DateTime, Utc}; use df_derive::prelude::*; use rust_decimal::Decimal; #[derive(Clone, ToDataFrame)] struct RiskBlock { sector: String, beta: f64, hedged: bool, } #[derive(Clone, ToDataFrame)] struct Fill { venue: String, size: u64, rebate_bps: f64, } #[derive(Clone, ToDataFrame)] struct ShowcaseRow { id: u64, symbol: String, notional: f64, quantity: u64, live: bool, maybe_note: Option<String>, #[df_derive(decimal(precision = 18, scale = 6))] price: Decimal, #[df_derive(time_unit = "us")] ts: DateTime<Utc>, #[df_derive(as_string)] side: Side, #[df_derive(as_binary)] fingerprint: Vec<u8>, risk: RiskBlock, fills: Vec<Fill>, marks: Vec<f64>, #[df_derive(skip)] cache_key: u64, } let df = rows.as_slice().to_dataframe()?; The generated schema from that nested Rust model:
id: UInt64 symbol: String notional: Float64 quantity: UInt64 live: Boolean maybe_note: String price: Decimal(18, 6) ts: Datetime('μs') side: String fingerprint: Binary risk.sector: String risk.beta: Float64 risk.hedged: Boolean fills.venue: List(String) fills.size: List(UInt64) fills.rebate_bps: List(Float64) marks: List(Float64) And the actual df.head() from the harness. Polars truncates wide tables by default, so the … is expected:
shape: (5, 17) ┌─────┬────────┬──────────┬──────────┬───┬────────────────┬────────────┬───────────────┬───────────┐ │ id ┆ symbol ┆ notional ┆ quantity ┆ … ┆ fills.venue ┆ fills.size ┆ fills.rebate_ ┆ marks │ │ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ bps ┆ --- │ │ u64 ┆ str ┆ f64 ┆ u64 ┆ ┆ list[str] ┆ list[u64] ┆ --- ┆ list[f64] │ │ ┆ ┆ ┆ ┆ ┆ ┆ ┆ list[f64] ┆ │ ╞═════╪════════╪══════════╪══════════╪═══╪════════════════╪════════════╪═══════════════╪═══════════╡ │ 0 ┆ SYM000 ┆ 10000.0 ┆ 100 ┆ … ┆ ["VENUE0"] ┆ [50] ┆ [-0.2] ┆ [99.5, │ │ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 100.0, │ │ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 100.5] │ │ 1 ┆ SYM001 ┆ 10001.25 ┆ 101 ┆ … ┆ ["VENUE1", ┆ [51, 52] ┆ [-0.15, -0.1] ┆ [99.6, │ │ ┆ ┆ ┆ ┆ ┆ "VENUE2"] ┆ ┆ ┆ 100.1, │ │ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 100.6] │ │ 2 ┆ SYM002 ┆ 10002.5 ┆ 102 ┆ … ┆ ["VENUE2"] ┆ [52] ┆ [-0.1] ┆ [99.7, │ │ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 100.2, │ │ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 100.7] │ │ 3 ┆ SYM003 ┆ 10003.75 ┆ 103 ┆ … ┆ ["VENUE3", ┆ [53, 54] ┆ [-0.05, 0.0] ┆ [99.8, │ │ ┆ ┆ ┆ ┆ ┆ "VENUE0"] ┆ ┆ ┆ 100.3, │ │ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 100.8] │ │ 4 ┆ SYM004 ┆ 10005.0 ┆ 104 ┆ … ┆ ["VENUE0"] ┆ [54] ┆ [0.0] ┆ [99.9, │ │ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 100.4, │ │ ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ 100.9] │ └─────┴────────┴──────────┴──────────┴───┴────────────────┴────────────┴───────────────┴───────────┘ The benchmark builds the same in-memory Polars DataFrame four ways:
| Approach | What it had to do |
|---|---|
df-derive | Derive ToDataFrame on the original nested Rust model and call rows.as_slice().to_dataframe()?. |
| hand-written Polars | Manually collect every column, convert decimal mantissas, cast microsecond datetimes, build Binary, and assemble list columns. |
serde_arrow | Flatten into a serialization row, hand-write the Arrow schema, serialize into an Arrow RecordBatch, then bridge that into Polars. |
polars-row-derive | Derive a flat row conversion, then post-process names, decimal/datetime dtypes, Binary, and list columns back to the target schema. |
For serde_arrow, I measured both bridge strategies I could make work:
| Bridge | Notes |
|---|---|
| IPC stream | Safe/public path in this harness, but it serializes to bytes and reparses into Polars. |
| Arrow C Data FFI | Faster, but it required a small unsafe adapter between arrow-rs FFI structs and polars-arrow FFI structs. |
Scope: Rust rows to an in-memory Polars DataFrame, 1M rows, median of 21 measured release iterations after 3 warmups. Data generation is excluded. Every path was smoke-tested for shape, column order, dtypes, and values before timing. These are from one representative release run on my machine; expect small run-to-run timing variance.
| Approach | 1M rows median |
|---|---|
df-derive | 73.347 ms |
serde_arrow + C Data FFI bridge | 212.492 ms |
serde_arrow + IPC bridge | 283.180 ms |
polars-row-derive + postprocess | 795.398 ms |
| hand-written Polars, readable baseline | 706.177 ms |
I also added a flat scalar row benchmark to avoid mixing polars-row-derive feature gaps with row-vs-columnar speed:
| Flat scalar row approach | 1M rows median |
|---|---|
df-derive | 20.837 ms |
polars-row-derive | 89.877 ms |
The headline I think is defensible is:
df-deriveis the fastest measured path in this benchmark from a rich Rust struct to an in-memory PolarsDataFrame, and it gets there with the least schema plumbing.
The hand-written Polars number is not a claim that generated code beats the theoretical human ceiling. The baseline is the readable version of the boilerplate df-derive replaces. In particular, it builds list columns through per-row inner Series values. A lower-level hand implementation using list builders should be faster and could plausibly close much of that gap.
The serde_arrow numbers are scoped to ending up with a Polars DataFrame. If your actual target is Arrow or Parquet, serde_arrow is a different tool in a different race. The IPC number includes bridge cost. The FFI number reduces that bridge cost, but in this setup it was not a simple safe RecordBatch -> DataFrame public API.
The polars-row-derive + postprocess number includes the work needed to reach the same rich schema: row cloning for the consuming iterator API, casts, renames, Binary rebuilding, and list-column insertion. The flat scalar benchmark is the cleaner row-vs-columnar comparison, but the polars-row-derive flat number still includes the per-call clone its consuming iterator API forces.
serde_arrow::to_record_batch takes &T: Serialize, so passing a bare slice failed because [SerdeArrowRow] is unsized. The harness passes &Vec<SerdeArrowRow>.serde_arrow could trace the flattened row structurally, but not semantically for this target: price traced as Utf8 and ts as Int64, so Decimal128 precision/scale and Timestamp unit had to be supplied explicitly.i128 carrier into Arrow Decimal128(18, 6) failed in this harness. Decimal strings worked, but parsing them is part of the measured serde_arrow cost.serde_bytes was needed to keep Vec<u8> on the Binary path. Without it, it is easy to compare against a list-of-u8 shape by accident.serde_arrow bridge was possible through Arrow C Data FFI, but required unsafe glue between upstream arrow-rs and polars-arrow C Data Interface structs.polars-row-derive compiled against Polars 0.53 in this isolated crate, but its generated polars::df! path could not build the Vec<Vec<T>> list columns used for the flattened Vec<Nested> representation.polars-row-derive consumes owned rows, so repeated benchmark iterations need to clone or collect the flat row buffer before conversion. That clone is included in both row-derive timings because it is required by the usable API shape here.rustc 1.95.0df-derive 0.3.1, polars 0.53.0, polars-arrow 0.53.0, serde_arrow 0.14.1, arrow 57.3.1, polars-row-derive 0.1.0, rust_decimal 1.42.0The repo has the full runnable harness and detailed methodology in comparison-bench/README.md; the generated report from the latest run is comparison-bench/BENCHMARK.md.
Crate: https://crates.io/crates/df-derive
Repo: https://github.com/gramistella/df-derive
Feedback welcome, especially around schema coverage and whether there is a better safe Arrow-to-Polars bridge I missed.
Thanks for taking the time to read this!
Hello r/Rust, it's about time I started sharing the framework I have been working on for the last year, I'm getting a bit burnt out and looking for more contributors.
It aims to provide a minimal framework for making creative audio applications in Rust.
I have some WIP documentation here, and there are a few examples in the parent repository.
If you're wondering how it compares to other tools in the space, here is a quick summary of the problems I found in other solutions:
Pure Data - UI Based, not so intuitive to track in Git, unintuitive for non DSP tasks
MaxMSP - Similar to the above, not FOSS, difficult to embed in various devices
SuperCollider - Legato aims to have a more minimal language, you can define custom nodes and add them to the runtime in Rust, and use the DSL just for orchestration. Additionally, the DSL maps to builder operations, and you can bypass this entirely.
CSound - Mostly the same as the above
FunDSP - A strong project, but I found the typenum port arity system quite annoying.
I have a few WIP NixOS images I am working on to target the Raspberry Pi + NixOS, and I hope to start sharing some open source groove boxes, synths, and trackers in the upcoming months.
I have a few features planned for the future:
- Polyphase resamplers + DSL syntax for oversampling boundaries
- More nodes
- UI editor that serializes to the IR to bypass the DSL
- Groovebox, FM Tracker, Sampler, etc. applications on NixOS images + Pi + PiSound
- Some sort of LSP/TreeSitter grammar for the DSL
- CLAP/VST examples
I believe that we should properly disclose AI usage. Most of the runtime and nodes were created as a learning exercise, and AI was minimally used for refactoring tasks or occasional bug fixes. AI was used quite extensively to create test coverage for the DSL, refactoring the IR, and finding various issues with parsing/graph transformations. I will not use this project however to promote any AI usage for creative tasks.
Feel free to help me dogfood the project, contributions are more than welcome. Please also let me know if you have any questions, the documentation is still quite sparse and if anything is unclear I would love to help.
Lastly, the license is currently AGPLv3 plus a few additional permissions to remove source disclosure for most creative projects. My goal here is to get strong contributions so I can build a library of excellent DSP primitives and hopefully make a healthy community around the project.
Debian keeps track which crates were used in which version for a given package. This project cross-references them with the RustSec advisory database. Currently only Debian sid is monitored.
I kept reinventing tools that already existed, so I built patent which is a prior-art search for code ideas. You give it a plain-English idea; it fans out concurrently to 11 ecosystems, ranks results by cosine similarity using local fastembed embeddings, and asks a local Ollama model for a scoped verdict (Open/Crowded/Saturated + gaps). Output is a ratatui TUI (detail view, sort, filter, mouse) or --json.
Rust-specific notes: clean lib/bin split (testable core + thin CLI/TUI shell), every source is best-effort (one failing never fails the run, "not reached" is surfaced), and the integrity rule "can prove something exists, never that it doesn't" is enforced in verdict.rs (it floors the saturation level against the embeddings and scrubs any absence-claiming copy), not just trusted to the prompt.
https://github.com/r14dd/patent Meet Sigma!
Sigma is a Go package for provider-neutral AI model calls, which is a polite way of saying I was tired of rewriting the same provider glue every fortnight because someone shipped a new model and decided streaming should work slightly differently this time. So I wrote it once, properly, and never again.
It does the boring but important stuff. Model metadata, text streaming, completions, tools, request persistence and custom OpenAI-compatible endpoints, all behind one tidy API. Register a provider, register a model, call the client, get back a clean stream of events. No drama.
Best bit? It has zero third-party dependencies. None. The whole thing runs on the Go standard library, which means it is small, easy to audit, fast to build, and it will not quietly drag forty packages and a security advisory into your project at two in the morning. There is even a test harness that makes no network calls, so your CI can stop pretending it has a credit card.
MIT licensed. v0.2.0 is up. Text is stable today, images and a few more providers are in preview while I stop procrastinating and go and finish them.
Github Actions Dependabot jobs for Go language projects became super slow for us in late April of this year and it was bothering me. I wrote up the quick fix if it is affecting you and you want to fix it, as well as all the relevant details from my investigation. Hope it is helpful!
Wrote a MuPDF binding for Go — basically a PyMuPDF-for-Go. I leaned on PyMuPDF's API design heavily; it's the version I wanted when working in Go instead of Python.
gomupdf does text, word/table extraction, rendering, and basic PDF writing. The part I like is a small higher-level API that lets you ask the page questions instead of doing the geometry yourself:
page.ValueRightOf("Total") // value next to a label
page.TextIn(rect) // text from a region
page.Tables() // detected tables
Caveats:
It's v0.1.0, the higher-level API is experimental, and it's AGPL-3.0 (because it links MuPDF) and cgo (needs libmupdf installed).
Repo: https://github.com/srijanmukherjee/gomupdf
Feedback welcome, especially on whether the "ask the page" API is useful.
I recently began using Go, and I wandered if it is still a good alternative for the future. TIOBE index shows that Go's popularity decreased. Should I look somewhere else or should I switch to another language?
I work at a startup and we're currently thinking of adding logs, metrices, traces, APM etc to our backend written in golang, I'm a bit confused onto how to do that part.
I know about otel but still a bit confused on how to setup the whole thing.
If you know can you share with me how to setup, what providers to choose etc etc.
Hey I am pretty new in golang but when I do work normally mostly use struct and then define methods with it and use interface untill there is a chances of grouping somehow. But when I use AI to generate code and using the best practice skills as well seeing the it use interface for almost every thing. Just wanted to know if using less interfaces is bad or normal.
Estaba desarrollando una herramienta en Go y necesitaba conservar metadatos internos entre operaciones. Un JSON que una parte del sistema escribe y otra lee posteriormente.
El problema: cualquier archivo en el árbol de trabajo es visible para todo. Git status, hooks, procesos externos. Y .gitignore no sirve si quieres que se mantenga en el repositorio.
Necesitaba algo que existiera en el historial pero que fuera invisible para cualquier proceso que viera el árbol de trabajo.
El modelo de objetos de Git te ofrece precisamente eso.
Internamente, más allá de add y commit, Git trabaja con tres primitivas: blobs, árboles y commits. Ninguna de ellas reside en tu árbol de trabajo, sino en .git/objects.
El flujo normal: modificas archivos → add crea el índice → commit crea el árbol a partir del índice. Pero puedes omitir el índice por completo.
`write-tree` crea un objeto de árbol a partir del índice actual. `commit-tree` toma ese árbol y crea un objeto de confirmación. `update-ref` mueve la rama. El árbol de trabajo nunca se modifica.
Mi herramienta en Go utiliza estas tres primitivas para inyectar el JSON directamente en la confirmación. Nunca aparece en `git status`. Los hooks siguen funcionando con normalidad. Y sobrevive a las fusiones de squash porque reside en el almacén de objetos de Git, no en el árbol de trabajo que se reescribe.
Hi, I have a small project to fetch and process my financial data and decided to learn Golang with it. To hold currency as a data type, I've seen the plentiful third party libraries that implement Decimal but I'd rather avoid third party libraries if possible. So my question is if big.Rat is acceptable type to hold currency?
Hi, I am wondering why there is no support for
func (o *orm) Create[T any](args ...any) *T{
....
}
instead I need to use
func Create[T any](o *orm, args ...any) *T{
....
}
The first option would look much better in the codebase.
It has been three years since I announced the initial release of betteralign, a tool that detects structs that could use less memory if their fields were reordered and can optionally rewrite them automatically.
Although I don't usually announce every major release here, the latest version is a significant step forward in both robustness and performance, particularly for large monorepos.
The documentation has been thoroughly revised to better explain the rationale behind the tool, and the benchmarks have been updated to compare performance across several previous major releases.
Beyond substantial improvements to the core engine, the internal AST decorator has been completely rewritten, extensively tested, and fuzzed. This has further improved performance, with the gains being especially noticeable in resource-constrained environments such as containers used in CI pipelines.
SO I am still working on this engine in Rust was stuck here for a while although I am still not satisfied but yeah I made some progress
| https://reddit.com/link/1tumyld/video/47va5icorw4h1/player Salut tout le monde ! La démo de VectHorde est en ligne depuis quelques jours maintenant. J'ai eu le plaisir de voir quelques téléchargements, et je veux remercier ceux qui ont pris le temps de tester le jeu (et le ZlormaEngine en action) ! Je commence à penser à développer une version complète. Pour m'assurer que ce contenu futur répond à vos attentes, j'apprécierais vraiment vos retours : Gameplay : Que pensez-vous du combat rapide et des contrôles ? Progression : Le système de loot et le Terminal Nexus sont-ils intuitifs ? Contenu : Qu'aimeriez-vous voir dans une version complète ? (plus d'ennemis, de nouveaux types d'armes, différents modes de jeu, etc.) N'hésitez pas à être honnête ; c'est la meilleure façon pour moi d'améliorer le moteur et de vous offrir une expérience encore plus agréable. Merci d'avance pour vos retours ! [link] [comments] |