consistent management of incremental schema migration
[brisk.git] / TODO.txt
1  TODO |
2 ------+
3
4   FEATURES |
5  ----------+
6    - CONTINUE FEATURE
7      DONE . save points every game
8      DONE . modify points calculation to include order and mazzo
9      HALF . exclude not standard types from statistics
10          DONE . daily reports
11          . monthly stats
12
13      . add command to continue
14      . investigate user reordering
15      . manage old games
16
17    - WEBSOCKET TRANSPORT
18      . refactoring $enc attribute management
19      DONE . reintroduced $enc = 'plain' for websocket
20      DONE . fallback for not correct WS version
21      DONE . fini of ws stream
22      DONE . reactivate compression
23      DONE . fix xynt_test01
24      DONE M2: brisk working
25      DONE . manage multiport apache config
26      DONE . manage headers correctly in sac-a-push
27      DONE . manage transport.close method where required
28      DONE . xynt_stream: manage fallback to multiple ports
29      DONE . manage fini for ws
30      POST . server: manage input data from clients
31      POST . manage ping/pong (seems not required)
32
33      DONE . client (xynt_streaming.js)
34      DONE . server (transport.phh)
35
36      DONE M1: xynt_test01.php working
37
38
39    - improved S
40      . db update (add components, maybe single string)
41      . filter in index.php
42      . filter in index_wr.php
43
44    - prefs API:
45      . prefs_assign(content): assign json content as output var
46      . prefs_apply(prefs_new): apply new content to g_prefs and system
47      . prefs_load(content): load json content and apply to g_prefs and system
48
49      . prefs_update: update preferences temporarly
50      . prefs_save: save to the server the new prefs
51
52    - preferences (listen into preferences)
53         // js var, volatile server, (db server || cookie)
54         temporary: js var, volatile server
55         permanent: js var, volatile server, (db server || cookie)
56
57      . data from db OR, if missing, from cookies
58
59      . update values
60      . database change
61      . MANAGE NOT AUTH USERS
62
63    - preferences (with "modifiable S")
64      . Mod. S: new flag into database
65      . graph infrastructure
66      . new box to edit color
67
68   MAJOR |
69  -------+
70    - BUG: some connection to the named socket fails
71    - Not simultaneous more then one stream
72
73
74   MINOR |
75  -------+
76    WIP - try to be more antivirus-friendly
77    - multiple rows between games
78    - packetize and automatize php-ancillary and apache module
79    - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
80
81
82   DONE |
83  ------+
84    DONE - temporarly server hung not reflected on user timeouts
85    DONE - timeouted users are still be able to sit down (only the first at the table is banned)
86    DONE - page still opened after the server restart
87    DONE - log_legal address fix
88    DONE - manage too fast reload in xynt-streaming
89    DONE - add xhr as transport layer and manage different streams better
90    TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
91    TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
92    DONE - save/restore database
93    DONE - into the room local step remains -1
94    DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
95    DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
96           in the first tentative, the second works
97    DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
98           problem was a call to a static parent method instead of the overrided child method,
99           substitute self:: with the dynamically get class::)
100    DONE - garbage management
101
102    DONE/FROZEN - problem with getpeer (HOSTADDR)
103
104    DONE - slow cards distribution
105    DONE - substr to mb_substr
106    DONE - parametrizations:
107           . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
108           . parametrization of SITE_PREFIX(_LEN) define
109           . move the name of the named socket into the configuration file
110    DONE - manage and test cross forwarder between table and room
111    DONE - setcookie (for tables only and persist prefs)
112    DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
113    DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
114    DONE - unneeded garbage_time.expired access
115    DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
116    DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
117    DONE - 404 wrong page management (remove directories redirections (es. brisk/))
118    DONE - configuration file management
119    DONE - app level keep-alive
120    DONE - index_wr other issues
121    DONE - from room to table
122    DONE - from table to room
123    DONE - chunked
124    DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
125    DONE - partial write for normal page management
126    DONE - index_rd_ifra: last_clean issue
127    DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
128    DONE - bug: after restart index_rd.php receive from prev clients a lot of req
129    DONE - index_wr.php::chat
130    DONE - index_wr.php::exit
131    DONE - index_rd.php porting
132    DONE - generic var management from internet
133    DONE - index.php auth part
134    ABRT - index_wr.php::reload - reload is js-only function
135    ABRT - keepalive management - not interesting for our purposes
136
137  BRISK4 (mammuth)
138  ======
139
140  - STEP MANAGEMENT VERIFY
141  Slim Paragraph
142  DONE - move the garbage timeout on file
143  DONE - in index_rd load all data only when required
144  - briskin5 alignment
145    DONE . extern del garb_timeout
146    DONE . user_load parameters verify
147    DONE . Bin5::load_data and Bin5::save_data refactoring with
148           data split
149    . move many function into "Bin5 class"
150  - garbaging of .step files
151
152  DB: - initial usage
153      DONE - configurabilità file o db
154      DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
155      DONE - travasatore file to pg
156        DONE - travaso punteggi
157        DONE - memorizzazione nuovi i punteggi nel db
158        DONE - gestione classifiche in SQL
159          DONE - produrle
160          DONE - mostrarle
161
162      STEP 1.1
163        DONE - points archiver
164
165      STEP 1.2
166        DONE - partial usability if database go down.
167
168      STEP 1.5
169      - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
170
171      STEP 2
172      - aggiornare le funz di gestione db in modo che prevedano anche il flag SUSPEND
173      - modifica password   
174      - ripristino password 
175
176      STEP 3
177      - comunicazioni di aggiornamento (stato salvato sul server) 
178
179  DONE - var $G_base aggiunta per gestire include in include da path differenti
180
181  BRISK3 (trusty)
182  ======
183   DONE - donameter
184     DONE - G_donors
185     DONE (WOW!) - js object with infos
186     DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
187            to prevent fast reload)
188     DONE - cookie per non assillare e visualizz.
189     DONE - graphical donameter
190     WIP content (in conf.)
191
192   DONE - numero di tavoli auth-only nel .brisk-install
193   - isolation
194     TEST - ricalcolo delle persone in piedi quando si cambia modalità
195     DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
196     DONE - non leggere le chat di quelli non autenticati (in isolation)
197     DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
198     DONE - treni non auth da nascondere 
199     DONE - verso gli altri ??: uguale a prima
200
201   finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
202   coniglio
203   only auth strictly
204   placing limits to config file
205
206 Dunque, 
207
208 - come vengono aggiornate le classifiche: ogni giorno alle 23:58
209
210 - cosa cambia tra le tre coppie di classifiche: 
211   ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
212   per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato più di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
213
214 - come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
215
216 Un esempio per chiarire:
217
218   l'utente 'pippo' che è nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
219     -2, 1, 2, 1
220   lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
221   
222   a parità di score tra utenti va più in alto chi ha giocato più partite.
223
224 Se dopo quelle 4 partite 'pippo' non ne giocherà più, passata una settimana dall'ultima giocata 
225 sparirà dalla classifica settimanale e rimarrà in quelle mensili e trimestrali.
226
227
228   
229
230
231
232
233  BUG
234  ---
235  
236   DONE - paste da demauroparavia
237   DONE - recupero partita per re-login con password
238   DONE - problema "|" nei nomi (manca enhance degli script lato server)
239   - problema col treno se mouse sopra mentre stringe (verif)
240   
241  MINOR
242  -----
243
244  NORMAL
245  ------
246
247   - win test
248   WIP - /listen 
249     DONE - skin della textarea
250     DONE - set cookie 
251     DONE - init client (read from cookie) - ALWAYS BY SERVER
252     DONE - init server
253     DONE - after cookie check auth-only when no-auth case
254     DONE - aggiungi info accanto a "Chat"
255   DONE - /mesgtoadm
256   DONE - img dei comandi
257
258   DONE - form per garantire utenti (accoda in un file nel formato corretto)
259   DONE -   process request
260   DONE -   show form
261   DONE -   close butt
262   DONE -   submit form
263   DONE -   process form js side 
264   DONE -   process form
265   DONE -   documentazione in help
266
267   DONE - user status
268
269   DONE - aggiornare help
270   DONE -   overflow management
271   DONE -   for status
272   -   for password
273
274   DONE - reload home
275   - notify for long pages
276
277   - buddy list
278   - silenziastolti vari (fino al buddy import)
279   - restrict challenge per IP
280   - restricted charset for login
281   - watchdog
282
283   - db (minimal)
284     - db admin page
285     - user db admin
286     - use db 
287     - admin db
288
289     - studiare un anti-dos
290   - login modify
291  DONE  - db (fake)
292  DONE  - display auth
293     - manage preferences 
294
295  minor
296  -----
297    - auth after login
298
299 ----- done ------
300
301  BUG
302  ---
303   DONE   righe troncate
304   DONE - questione "a monte" che:
305   DONE   - lascia fuori il bottone
306   DONE   - scrive &agrave e compagnia
307   DONE - refresh act_table when unauthorized
308   DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
309
310  MINOR
311  -----
312   DONE - refactoring of the owner name (auth attr for owner name)
313   DONE   - room
314   DONE     - at chat input line 
315   DONE     - in the chat output line
316   DONE     - deauth management
317   DONE - table
318   DONE   - at chat input line
319   DONE   - in the chat output line
320   DONE   - for user area of other users
321   DONE   - deauth management
322   DONE - alart to one user
323
324
325  NORMAL
326  ------
327   DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
328   DONE   - login: se auth      -  verifica solo gli expire per quel nick
329   DONE   -        se non auth  -  verifica gli expire per IP e sessione
330   DONE   - riscrivere messaggi
331
332   DONE - login 
333   DONE   - se pass:
334   DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
335   DONE     - lo legge, ci hasha la password
336   DONE     - invia la pass al server hashata
337   DONE   - se non pass:
338   DONE     - check del login e return corretto
339   DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
340   DONE     - rename ghost if logged
341   DONE     - onunload_cb e onbeforeunload_cb !!! 
342   DONE   - da change attrs a change class (input field)
343   DONE     - colore del bg per arrivare ad essere omogeneo
344   DONE     - cambiare path e file di config
345   DONE   - login with or without pass
346   DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
347   DONE     - segnalare tavoli solo per auth
348   DONE     - rename restriction at auth table
349   DONE     - change nick (strcasecmp)
350   DONE   - refact js tables to handle flags
351   DONE - room javascript refactoring
352
353   DONE - work background
354   DONE - reserved tables
355
356
357  BRISK2 (spawn)
358  ======
359
360    
361    URGENT - tables spawn
362             DONE - link with photos
363             DONE - top banner in Etc file
364             DONE - spawn of a table
365             DONE - data to cookies (removed table_idx from xhr calls also)
366             DONE - set subst to shutdowner/shutdowned
367             DONE - return to index.php
368             DONE - game's token
369             DONE - recover of corrupted table data
370             DONE - closure of a table
371             DONE - flush of the table
372             DONE - security checks for right scope access
373             DONE - garbage collector management
374             DONE -    recursive garbage - howto ?
375             DONE - stat & subst in browser
376             DONE - laccwr setting and exit if all players are unactive for some time
377             DONE - the list of test case
378             DONE - shm dimension
379             DONE - remove unused parts
380             DONE - move images
381             DONE - optimizations
382             DONE - cambiare titolo al tavolo
383             DONE - shutdowning lock tables
384             DONE - topbanner
385             DONE - public announcements
386             DONE - 10 sec to exit from table
387
388             FAR - inheritances
389    
390    TRAIN  -  DONE - add again in reload   
391              DONE - wag_set refact
392              DONE - filtra char speciali per title
393              DONE - chatt_send refact 
394              DONE - elenco dei giocatori
395              DONE - documentazione online
396              DONE - timeout management     
397              LATER - border color a muzzo
398        
399    NORM   - testament
400    NORM   - public announcements
401    NORM   - 10 sec to exit from table
402    NORM   - moving label for tables click
403
404 ----------------- join -----------------
405    NORM   - map
406
407    NORM   - restart preload img
408    NORM   - tools dir with a main and some pages where check briscola tools.
409    NORM   - watchdog
410
411    NORM   - chat vecchie in reload (forse)
412
413  MIDDLE TODO
414  ===========
415
416    - user assistant (with button to enable disable)
417    - documentation
418
419
420  FAR TODO
421  ========
422    NORM - internationalization
423    NORM - img -> div + css
424    
425  WEB
426  ===
427
428    - link to stable/unstable
429
430 -------------------------------------------------------------------
431  DONE
432  ====
433
434    ABORTED - asta: highlight buttons (css hover) - change pointer when over
435    DONE - step proxy
436    DONE - special chars in js
437    DONE - ban temporaneo dai tavoli
438    DONE - flash player to play sound
439    DONEBUG - (aum. il timeout) - carte giocate che restano girate
440          Sembra non migliorare di molto la cosa, gestita la cache
441          correttamente, sono apposto.
442
443    DONE - one player reject a game, to less points (<= 2)
444    DONE - help page
445    DONE - test di download per la cache
446    DONE - se passano tutti tranne l'ultimo l'asta va al penultimo.
447           Corretto il codice, occorre verificare se questo
448           ingenera qualche problema.
449    DONE - raddoppiato il numero di righe nella chat
450    DONE - corretto bug del /nick
451    DONE - carosello pubblicità altout
452    DONE - smammamorti
453    DONE - unload of the stream
454    DONE - standup centrati
455    DONE - current player - in info
456    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
457    DONE - welcome lines in the chats (room and table)
458    DONE - welcome lines in the chats (room and table)
459    DONE - nomi in primo piano se vai sul quadrato   
460    DONE - to pass explicit config file to INSTALL.sh
461    DONE - flag to create a config file
462    ABRT - bottoni => immagini
463    DONE - aggiungere bottone al login
464    DONE - nomi in primo piano se vai sul quadrato   
465    DONE - installer to set cookie path
466    DONE - change name
467    DONE - automatic and manual logout
468    DONE - cache problems solved via .htaccess
469    DONE - all players out of the auction
470    DONE - time to send cards
471    DONE - hide cards before sends at a new game
472    DONE - well recognization of the browser and O.S.
473    DONE - login consistency !!!!
474    DONE - functionalization of garbage
475    DONE - call garbage function into login
476    DONE - game
477    DONE - manage the reload from scratch of the table page
478    DONE - table reset
479    DONE - sendcard => card_send(idx, ....)
480    DONE - show table for game
481    DONE - points calculation
482    DONE - make-up of the chooser
483    DONE - where place the briscola on the table
484    DONE - users info
485    DONE - show current auction position
486    DONE - table with internal management of the transition between pages.
487    DONE - server side page abort management  
488    DONE - cookie problem with Ajax
489    DONE - spostare il tasto "esco"
490    DONE - to pass explicit config file to INSTALL.sh 
491    DONE - 8 tables
492    DONE - safety out management
493    DONE - info enhancement and related button (how win the last game and
494           with how much points ?)
495
496  WEB
497    DONE - homepage
498    DONE - screenshots
499
500 DOC
501    CHAPTERS
502       HTTP Streaming
503       Local serializer
504       Database on shmem
505       Page abort (reload on http streaming case)
506       Chat
507       Cookies management
508       CSS tricks
509
510 CHECK ON NEW SERVERS
511 .htaccess AllowOverwrite mode for Cache-Control directive
512
513
514
515
516 */
517